Update
[less_retarded_wiki.git] / free_software.md
blob8122305150d095954a602e200703b169b7b36317
1 # Free Software
3 *Not to be [confused](often_confused.md) with [open $ource](open_source.md).*
5 Free (as in freedom) software is a type of ethical [software](software.md) that's respecting its users' freedom and preventing their abuse, generally by availability of its source code AND by a [license](license.md) that allows anyone to use, study, modify and share the software without restricting conditions (such as having to pay or get explicit permission from the author). Free software is NOT equal to software whose source code is just available publicly or software that is offered for zero price, the basic legal rights to the software are the key attribute that has to be present. Free software stands opposed to [proprietary software](proprietary_software.md) -- the kind of abusive, closed software that [capitalism](capitalism.md) produces by default. Free software is not to be confused with [freeware](freeware.md) ("gratis", software available for free); although free software is always available for free thanks to its definition, zero price is not its goal. The goal is freedom.
7 Free software is also known as *free as in freedom*, *free as in speech* software or *libre* software. It is sometimes equated with [open source](open_source.md), even though open source is fundamentally different ([evil](evil.md)), or neutrally labelled FOSS or FLOSS (free/libre and open-source software); sadly free software has lost to open source in mainstream popularity. In contrast to free software, software that is merely gratis (freeware) is sometimes called *free as in beer*.
9 **Examples of free software** include the [GNU](gnu.md) operating system (also known as "[Linux](linux.md)"), [GIMP](gimp.md) (image editor), [Stockfish](stockfish.md) chess engine, or games such as [Xonotic](xonotic.md) and [Anarch](anarch.md). Free software is actually what runs the world, it is a standard among experts and it is possible to do computing with exclusively free software (though this may depend on how far you stretch the definition), even though most normal people don't even know the term free software exists because they only ever come in contact with abusive [proprietary](proprietary.md) consumer software such as [Windows](windows.md) and capitalist [games](game.md). There also exists a lot of big and successful software, such as [Firefox](firefox.md), [Linux](linux.md) (the kernel) or [Blender](blender.md), that's often spoken of as free software which may however be only technically true or true only to a big (but not full) degree: for example even though [Linux](linux.md) is 99% free, in its [vanilla](vanilla.md) version it comes with [proprietary](proprietary.md) [binary blobs](binary_blob.md) which breaks the rules of free software. [Blender](blender.md) is technically free but it is also [capitalist software](capitalist_software.md) which doesn't really care about freedom and may de-facto limit some freedoms required by free software, even if they are granted legally by Blender's license. Such software is better called "[open source](open_source.md)" or [FOSS](foss.md) because it doesn't meet the high standards of free software. This issue of technically-but-not-really free software is addressed by some newer movements and philosophies such as [suckless](suckless.md) and our [less retarded software](lrs.md) who usually also aim for [unbloating](bloat.md) technology so as to make it more free in practice.
11 Though unknown to common people, the invention and adoption of free software has been **one the most important events in the [history](history.md) of computers** -- mere technology consumers nowadays don't even realize (and aren't told) that what they're using consists and has been enabled possibly mostly by software written non-commercially, by volunteers for free, **basically on [communist](communism.md) principles**. Even if consumer technology is unethical because the underlying free technology has been modified by [corporations](corporation.md) to abuse the users, without free software the situation would have been incomparably worse if [Richard Stallman](rms.md) hadn't achieved the small miracle of establishing the free software movement. Without it there would probably be practically no alternative to abusive technology nowadays, everything would be much more closed, there would probably be no "[open source](open_source.md)", "[open hardware](open_hardware.md)" such as [Arduino](arduino.md) and things such as [Wikipedia](wikipedia.md). If the danger of [intellectual property](intellectual_property.md) in software wasn't foreseen and countered by Richard Stallman right in the beginning, the corporations' push of legislation would probably have continued and copyright laws might have been many times worse today, to the point of not even being able to legally write free software nowadays. We have to be very grateful that this happened and continue to support free software.
13 [Richard Stallman](rms.md), the inventor of the concept and the term "free software", says free software is about ensuring the freedom of computer users, i.e. people truly owning their tools -- he points out that unless people have complete control over their tools, they don't truly own them and will instead become controlled and abused by the makers (true owners) of those tools, which in [capitalism](capitalism.md) are [corporations](corporation.md). Richard Stallman stressed that **there is no such thing as partially free software** -- it takes only a single line of code to take away the user's freedom and therefore if software is to be free, it has to be free as a whole. This is in direct contrast with [open source](open_source.md) (a term discourages by Stallman himself) which happily tolerates for example [Windows](windows.md) only programs and accepts them as "open source", even though such a program cannot be run without the underlying proprietary code of the platform. It is therefore important to support free software rather than the business spoiled open source.
15 **Free software is not about [privacy](privacy.md)!** That would be quite misleading viewpoint. Free software, as its name suggests, is about freedom in wide sense, which includes the freedom of absolute control over one's devices that may ensure privacy and anonymity, but there are many more freedoms which free software stands for, e.g. the freedom of customization of one's tools or the general freedom of [art](art.md) -- being able to utilize or remix someone else's creation for creating something new or better. Software focused on privacy is called simply privacy respecting software.
17 The forefront non-profit organization promoting free software has since its invention been the [Free Software Foundation](fsf.md) (FSF) started by Richard Stallman himself alongside his [GNU](gnu.md) project. Nevertheless we must keep in mind that FSF doesn't equal free software, free software as a concept is bigger than its inventor or any organization, the idea -- just as for example political or religious ideas -- has since its birth been adopted with various modifications by many others, it is being expanded, improved, renamed and yes, even twisted and abused. Free software has spawned or influenced for example [Debian](debian.md), [free culture](free_culture.md), [free hardware](free_hardware.md), [FSFE](fsfe.md), [FSFLA](fsfla.md), [open $ource](open_source.md), [suckless](suckless.md), [copyfree](copyfree.md), [freedesktop](freedesktop.md) and many others. FSF itself has become quite spoiled and political, but it has achieved sending out the message about sharing, collaboration and ethics, which at least a few people still try to keep following.
19 **Is free software [communism](communism.md)?** This is a question often debated by [Americans](usa.md) who have a panic phobia of anything resembling ideas of sharing and giving away for free. The answer is: yes and no. No as in it's not [Marxism](marxism.md), the kind of [evil](evil.md) pseudocommunism that plagued the world not a long time long ago -- that was a hugely complex, twisted violent ideology encompassing whole society which furthermore betrayed many basic ideas of equality and so on. Compared to this free software is just a simple idea of not applying intellectual property to software, and this idea may well function under some form of early capitalism. But on the other hand yes, free software is communism in its general form that simply states that sharing is good, it is communism as much as e.g. teaching a kid to share toys with its siblings.
21 [Fun](fun.md) fact: around 1991 Richard Stallman created the *Free Software Song* which starts with the lyrics: "Join us now and share the software; you'll be free, [hackers](hacking.md)." -- Stallman said he put the lyrics in the [public domain](public_domain.md). The melody is taken from Bulgarian folk song called *Sadi Moma*. The song has a very uncommon 7/8 rhythm that is not easy to follow, especially when singing at the same time, but Richard Stallman always follows it perfectly.
23 ## Definition
25 Free software was originally defined by [Richard Stallman](rms.md) for his [GNU](gnu.md) project. The definition was subsequently adopted and adjusted by other groups such as [Debian](debian.md) or [copyfree](copyfree.md) and so nowadays there isn't just one definition, even though the GNU definition is usually implicitly assumed. However, all of these definition are very similar and are quite often variations and subsets of the original one. The GNU definition of free software is paraphrased as follows:
27 Software is considered free if all its users have (forever and without possibility of revoking) the legal and [de facto](de_facto.md) rights to:
29 0. Use the software for any purpose (even commercial or that somehow deemed unethical by someone).
30 1. Study the software. For this source code of the program has to be available.
31 2. Share the software with anyone.
32 3. Modify the software. For this source code of the program has to be available. This modified version can also be shared with anyone.
34 Note that as free software cares about real freedom, the word "right" here is seen as meaning a [de facto](de_facto.md) right, i.e. NOT just a legal right -- legal rights (a free [license](license.md)) are required but if there appears a non-legal obstacle to those freedoms, truly free software communities will address them. Again, open source differs here by just focusing on legality, i.e. open source only cares about technically adhering to legalese while ignoring everything else.
36 To make it clear, freedom 0 (use for any purpose) covers ANY use, even commercial use or use deemed unethical by society or the software creator. Some people try to restrict this freedom, e.g. by prohibiting use for military purposes or prohibiting use by "fascists", which makes the software NOT free anymore. NEVER DO THIS. The reasoning behind freedom 0 is the same as that behind [free speech](free_speech.md) or freedom of research: allowing any use doesn't imply endorsing or supporting any use, it simply means that we refuse to engage in certain kinds of oppression out of principle. Creator of software shouldn't be the authority deciding how the software can be used just as a scientist mustn't be the authority who decides how his discoveries will be used. We simply don't do this -- to address "wrong" use of technology is a matter of different disciplines such as philosophy.
38 [Source code](source_code.md) is usually defined as the preferred form in which the software is modified, i.e. things such as [obfuscated](obfuscation.md), [minified](minification.md) or compiled source code don't count as true source code.
40 The developers of Debian operating system have created their own guidelines (Debian Free Software Guidelines) which respect these points but are worded in more complex terms and further require e.g. non-functional data to be available under free terms as well ([source](https://people.debian.org/~bap/dfsg-faq.html#not_just_code)), respecting also [free culture](free_culture.md), which GNU doesn't ([source](https://www.gnu.org/distros/free-system-distribution-guidelines.en.html#non-functional-data)). The definition of "[open source](open_source.md)" is yet more complex even though in practice legally free software is eventually also open source and vice versa. The [copyfree](copyfree.md) definition tries to be a lot more strict about freedom and forbids for example [copyleft](copyleft.md) (which GNU promotes) and things such as [DRM](drm.md) clauses (i.e. a copyfree license mustn't impose technology restrictions, even those seen as "justified", for similar reasons why we don't prohibit any kind of use for example).
42 ## Measuring Practical Freedom With Freedom Distance
44 One big issue related to free software and similar causes (e.g. [free hardware](free_hardware.md)) is slipping into the trap of only apparent freedom, getting false feeling of freedom without actually having real, practical freedom; that is having freedom given legally on the paper which however may be [de facto](de_facto.md) extremely hard or impossible to make use of practically in real life. Imagine for example a highly complex software that by its license gives everyone the right to modify it but in practice to make meaningful modifications one needs specialized hardware and deep knowledge and know-how of how the code really works -- example of this is for example the [Android](android.md) operating system. This particular example is called [bloat monopoly](bloat_monopoly.md) and is highly used to mislead users into thinking they have freedom or that they support something ethical while in fact they don't (see also e.g. [openwashing](openwashing.md)). Giving only this apparent freedom is how [capitalism](capitalism.md) adjusted to the wave of free software, it is how businesses silently smother real freedom while pretending to embrace free software (which they rather call [open source](open_source.md)). For this we always have to evaluate practical freedom we have, i.e. whether, and with what difficulties, we can execute the four basic freedoms required by free software -- remember that all are essential and once even a single of the freedoms is lost, the whole software becomes completely [proprietary](proprietary.md) and non-free.
46 One possible measure of practical freedom is **freedom distance**. For any piece of software that comes with a free license (i.e. one that gives the four essential freedoms legally) let us define freedom distance as the average minimum distance to the nearest man that can PRACTICALLY execute ALL of the freedoms (taken over all people in the world). In other words it says how far you have to go to reach the freedom you are promised. As any metric it's a bit of a simplification, but while physical distances may seem to not matter much in the age of Internet, the measure contains in it embedded the number of people who have control over the piece of software, it says how centralized the control is and how difficult it will be to for example spot and remove malicious features. Large freedom distance means the freedom is far away, that you are relying on someone in another country to fix your software which of course is dangerous, even the Internet may get split, it is important for you to be able to execute your freedom locally (even if you're not doing it now, it is important that you COULD). It may also happen that the foreign maintainer of your software suddenly turns evil -- e.g. in pursuit of profit -- and then having someone close who can take over fixing and maintaining that software is key for freedom. From this point of view a freedom distance shorter than one's body is ideal -- it would mean that any single individual has complete control over his own tool.
48 Let's show this on two extreme examples:
50 - A simple program will have very small freedom distance. For example the [suckless](suckless.md) implementation of the [cat](cat.md) program (from the [sbase](sbase.md) package) is written in C and currently has about 50 lines of code. How far on average do you have to go to find someone that will be able to use the program AND understand every part of the source code AND share the program AND make any kind of meaningful modification to it? Using and sharing will be pretty easy for everyone, but remember, we are looking for the closest human that can execute ALL of the freedoms, so we are looking for someone who can compile and modify very basic C programs. As the program is extremely simple, anyone who ever learned complete basics of programming will be able to do this, even if he's not nearly an expert at programming -- this particular program doesn't even use [object oriented programming](oop.md), design patterns and similar "advanced" things that would further reduce the number of people who understand it. If you are reading this wiki, you can almost definitely exercise all the freedoms with this program but even if you can't, it's extremely likely you will find someone who can in the neighborhood of your very street, and if not, then definitely at least the ICT teacher at nearest elementary school will. If the Internet goes down, if your country isolates politically or if the program's maintainer turns nuts or just stops maintaining the program, the program still stays quite safe and in your hands: if it needs fixing or improvement, at worst you'll have to ask your neighbor to help you out. Now if we average this freedom distance for all people on Earth, we may get a freedom distance smaller than the size of a small village -- this is pretty good.
51 - A very complex program will have big freedom distance. Here let's take a look at the mentioned [Android](android.md) operating system. Compiling Android is very hard, it even requires quite powerful hardware, it's not very likely you'll find someone who can easily do it very near, however to make meaningful modifications to the system will be yet much, much more difficult. Imagine you for example want to change process scheduling in the system's kernel, add new filesystem support, remove all networking and telemetry, port it to run in web browser or you want to replace the GUI system with a completely different one etc. Can you do these things easily? Remember, as a reader of this wiki you are technically skilled, and even so you most likely can't do it -- even if you're an excellent programmer and dedicate all energy to it, you will likely need a few weeks of full time work to add a simple feature to the OS, and you are still a negligible exception among all the normies around, so how far away is someone who has complete control over Android? These people are probably just sitting in Google headquarters. So Android's freedom distance will be quite close to average distance to Google headquarters over all people on Earth, which will be a distance of many countries.
53 ## History
55 Free software was invented by [Richard Stallman](rms.md) in the 1980s. His free software movement inspired later movements such as the [free culture](free_culture.md) movement and the evil [open-source](open_source.md) movement.
57 TODO: something here
59 **By 2024 free software is dead** -- yes, FSF and some free software "activists" are still around, but they don't bear any significance, just like the hippies lost any significance after 1960s etc. Corruption, politics and [free market](capitalism.md) have finally killed the movement, [open $ource](open_source.md) prevailed and it is now redefining even the basic pillars of the four freedoms (partial openness or just source availability is now practically synonymous with "open source"), probably sealing the fate of technology, free software seems to have only postponed [capitalist disaster](capitalist_singularity.md) by a few decades, which is still a great feat. { It's been pointed out to me that even some project that call themselves "free" or "libre", such as "Libre"Boot, are in fact breaking the rules of freedom now, for example by including proprietary blobs. ~drummyfish }
61 ## "Free" Software Alternatives, Pseudo Free Environments AKA What Freedom Really Is
63 **The "free software alternatives" question** is one that's constantly being discussed under [capitalism](capitalism.md): [corporations](corporation.md) try to forcefully keep users enslaved by proprietary software environments while free software proponents and users themselves want to free the users with "alternatives" made as free software. A very common mistake for a free software newcomer to make is to try to **"drop-in replace proprietary software with free software"**; a user used to proprietary software and its ways just wants the programs he's used to, just "without ads and subscriptions etc.". This doesn't work, or only to an extremely limited scale, because the whole proprietary world is made and DESIGNED from the ground up to allow user exploitation as much as possible, with e.g. building such thing like [consumerism](consumerism.md) right into the design of visual elements of the software etc., i.e. proprietary vs free software is not just about a legal [license](license.md), but whole philosophy of technology, asking things such as [why are we so obsessed over "updates"](update_culture.md) or [why are we freaking out about privacy](privacy.md). Trying to drop-in replace proprietary technology with 1 to 1 looking free software is like trying to replace whole capitalism with an "environment friendly capitalism" in which everything works the same except we have cars made of wood and skyscrapers made of recycled paper -- indeed, one sees that to get rid of the destructive nature of capitalism we really have to replace capitalism as such with all its basic concepts with something fundamentally different; and the situation is same with proprietary software.
65 For example most users nowadays want [GUI](gui.md) in all programs, which is how they've been nurtured by capitalism, however we have to realize that **a truly ([de facto](de_facto.md), not just legally) free software has to be [minimalist](minimalism.md)** and so most TRULY free software will mostly work only from the [command line](cli.md); a command line program is not necessarily harder or less comfortable to use (users are just nurtured to think so by capitalism), it is however inherently more free than a GUI one in all ways (not only by being more flexible, efficient, [portable](portability.md) and non-discrimination, but also simpler and therefore e.g. modifiable by more people). We have to realize that a **freedom respecting computing environment INHERENTLY LOOKS DIFFERENT from the proprietary one**, the matter is NOT only about the license (free license is just a necessary condition to allow freedom under capitalism, however it is not a sufficient condition for freedom). Some projects calling themselves "free" (or rather "[open source](open_source.md)") make the mistake (sometimes intentionally, exactly to e.g. more easily pull over more users from the proprietary land) of simply mimicking proprietary ways 1 to 1 -- see e.g. [Fediverse](fediverse.md) ("free" facebook/twitter/etc.), [Blender](blender.md) etc. -- these are technically/legally free, but not actually, de-facto free. While a short-sighted view tells us this wins more users from the proprietary platforms, in long term we see we are just rebuilding dystopias, only painted with brighter colors so as to make them look friendlier (and oftentimes this is exactly the aim of the authors). Transitioning to TRULY free platforms is harder -- **one has to relearn basic things** such as, as has been mentioned, working with command line rather than GUI -- but ultimately right as one really gets more freedom, however under capitalist pressure and nurturing it is a hard thing to do, requiring extorting a lot of energy to resist the pressures of society.
67 After some years dealing with software freedom (in serious ways, making money doesn't count) many -- including [us](lrs.md) -- realize that the "licensing" fuss and legal questions, though important, are the surface, shallow views of freedom; one that also gets exploited by many (see e.g. [openwashing](openwashing.md)). Those who seek real freedom will sooner or later find themselves focusing on [minimalism](minimalism.md) and simplicity, e.g. [LRS](lrs.md), [suckless](suckless.md), [Bitreich](bitreich.md) etc. Going yet further, one starts to see the inherent interconnections of technology and whole society, and has to become interested also in social concepts, hence our proposal of [less retarded society](less_retarded_society.md).
69 ## See Also
71 - [free hardware](free_hardware.md)
72 - [open source](open_source.md)
73 - [free culture](free_culture.md)
74 - [creative commons](creative_commons.md)
75 - [copyfree](copyfree.md)
76 - [freedom distance](freedom_distance.md)
77 - [kosher software](kosher_software.md)