FLOSS Concept Booklet
||A Wikibookian believes this page should be split into smaller pages with a narrower subtopic.
You can help by splitting this big page into smaller ones. Please make sure to follow the naming policy. Dividing books into smaller sections can provide more focus and allow each one to do one thing well, which benefits everyone.
Reading not your thing? Much of the content below is explained in audio and video here.
Intro / ConceptEdit
What does FLOSS stand for?Edit
FLOSS stands for "Free/Libre Open-Source Software".
Legally, Free Software and Open-Source take quite different attitudes to sharing source code and what obligations those who share legally require. The different attitudes are a product of political ideology and cannot be easily reconciled - though they can be neutrally explained (only) by referring to the legal concepts of 'share-alike' and a 'consortium'. The term FLOSS emerged to simply avoid having to discuss or define these ideas to ordinary users who want to know about the implications for end users. Which do not normally include the legal negotiations between contributors.
What is free software?Edit
Free software is software that anyone is free to use, copy, improve, examine or distribute, either free of cost or for a price. More precisely, it refers to four fundamental freedoms, which users of the software should have:
- Users should be able to run the software for any purpose. (freedom 0 — many things in computers start at 0)
- Users should be able to closely examine and study the software and should be able to freely modify and improve it to suit their needs better. (freedom 1)
- Users should be able to give copies of the software to other people for whom the software will be useful, either gratis or for a fee. (freedom 2)
- Users should be able to improve the software and freely distribute their improvements to the broader public so that they, as a whole, benefit. (freedom 3)
There is nothing new or special about this. This is how software used to be developed in the early 'Big Iron' days of companies which made money by selling hardware. But then, software companies came in, they started changing the rules of the game. They saw software only as a means of making money rather than as a means of making life easier, and with the advent of the 'Shrink-Wrap-License' even the need to provide a properly tested program was obviated.
Legally, free software is defined by a license to use and distribute the software that guarantees all four of these freedoms. Any user who grants all of these freedoms to other users retains their access to the software. In strict legal terms, the software is share-alike but only to those users who uphold these obligations. All others are disqualified and may lose their right to use, extend, distribute or derive new works from it.
It isn't open content, which has its own rulesEdit
Some related share-alike movements do not accept the so-called freedom 0 - it remains highly controversial. Accordingly those movements are neither free software nor open-source. They are part of the broader open content movement however. A typical license that restricts use by certain people or groups but permits it under share-alike terms to others is CC-by-nc-sa (the Creative Commons attribution-non-commercial-share-alike license) that is extremely popular among content and code developers that do not wish to grant commercial entities the power to build on their work without paying.
As a user, why would I want to examine and modify my software?Edit
What is important is not that you modify or view the sources, but that you cannot be prevented from doing so or having it done (for you) and are not dependent on a particular person or entity to do it. Not to mention the fact that companies do go out of business - taking their proprietary products down with them - sometimes leaving the users who relied on them without any means of supporting some critical product.
As technology evolves, hardware, software and users' requirements change. And software, being a tool to make life easier, too has to be subject to easy and quick modification. So, even if you personally cannot change or modify the software, you want to be sure that you are not subject to monopoly power, or even simply the whims and fancies, of whoever created the software.
That apart, it is necessary to be able to examine the software, to see if it has malicious features. For example, to check whether the program is spying on you. One version of Windows was designed to report to Microsoft all the software on your hard disk. But Microsoft is not alone: the KaZaa music sharing software is designed so that KaZaa's business partner can rent out the use of your computer to their clients. You (or anyone else) need to be able to examine and modify your software to be able to protect yourself against such mistreatment. Even if you don't know what bad things to look for, someone who does will soon find this "bad thing" in the program and spread the word about it.
Doesn't "free" mean that I do not have to pay for the software?Edit
No. The word "free" has two meanings in the English language.
- The "free" in "free beer", which refers to zero cost.
- The "free" in "free speech" and "free market", which refers to freedom.
The free in free software refers to the freedoms that we've talked about above that people have. There's nothing in the definition of free software that says that you cannot sell it to someone for a price. Indeed, there are companies whose entire business model is centred around collecting, compiling and selling free software. However, since someone to whom free software is licensed is free to sell or give it away in turn, you can almost always easily find it openly (and legally) downloadable on the Internet or other places.
When you hear of "free software", think of liberty, freedom, and "free enterprise".
Well, what's not "free" about other kinds of software?Edit
Most non-free software in the world today is not sold, it is licensed. From complex operating systems to tiny games or screen savers, the end users of the software have a license to use it under conditions laid out in an End User License Agreement. This agreement lists out the conditions under which the user can use the software – often restrictions are imposed on the use to which the software can be put. In almost all cases, users are explicitly prohibited from "taking the software apart" to study how it works, cannot modify or improve it, are only allowed to make a single copy of the software (for backup purposes) and are strictly prohibited from giving copies to other people.
What do you mean by "copyleft"? What's wrong with copyright? How is this different?Edit
Legally, a copyleft is a share-alike clause in a license that requires certain conditions (or "freedoms") be upheld by the user, distributor or anyone basing a derivative work on the original. One of those conditions is to treat all other users, distributors and derived work authors equally under the conditions of the license. One of those equal conditions is the withdrawing of all rights under the license from anyone who does not do so.
Free software historically implemented copyleft by requiring all modified and extended versions of the program to be free software as well, using the copyright in the program (and associated rights to restrict use of it or derivations of it) as leverage. This did not deal with every problem. In particular, it did not prevent authors of derived works from filing a software patent on their improvements, nor anyone from building a web service on the original software and extending it by 'mashup' methods. These deficiencies are supposed to be addressed in the GPL version 3.0.
The original GPL, despite deficiencies, was an attempt to build a very minimal consortium among all users who would agree to its four freedoms. To understand this we must review the alternatives.
The simplest way to make a program free is to put it in the public domain, uncopyrighted. This allows people to share the program and their improvements, if they are so minded. But it also allows uncooperative people to convert the program into proprietary software. They can make changes, many or few, and distribute the result as a proprietary product. People who receive the program in that modified form do not have the freedom that the original author gave them; the middleman has stripped it away. Also the developers of free software will be forced to compete with improved versions of their own software (which open-source does permit).
Copyleft says that anyone who redistributes the software, with or without changes, must pass along the freedom to further copy and change it. If they do not, they lose their rights. As Stallman puts it, "Copyleft guarantees that every user has freedom, and ensures that somebody does not remove the freedom from free software."
To copyleft a program, first state that it is copyrighted; then add distribution terms in the form of a license document – they comprise a legal instrument that gives everyone the rights to use, modify, and redistribute the program's code or any program derived from it but only if the distribution terms are unchanged. Thus, the code and the freedoms become legally inseparable.
According to the Free Software Foundation, "Proprietary software developers use copyright to take away the users' freedom; we use copyright to guarantee their freedom. That's why we reverse the name, changing 'copyright' into 'copyleft'." Historically however the term was simply a joke or pun added to a letter to Richard Stallman by Don Hopkins who had put "copyleft - all rights reversed" as one of many annotations.
The most popular copyleft license is the GNU General Public License.
What licenses exist to protect free software?Edit
There are many licenses that make a piece of software free. But only some of them preserve user freedom aka copyleft. The non-copyleft license include X11, BSD, Artistic... The strongest copyleft and most widely used free software license is the GNU General Public License, or GNU GPL for short.
For a more complete list of licenses check out the GNU website.
Okay, so I can see that free software is legal but surely if I duplicate something that means that someone is losing out somewhere along the way?Edit
We in the free software community feel that the harm caused by obstructing software use cannot be justified by the profit obtained through selling software. We use other means to earn money.
Also, chances are if someone didn't get the software for no price, they wouldn't have gotten it at all. Take all the people that get proprietary software illegally from peer-to-peer programs for example.
Contrary to your assumption that allowing distribution and modification causes loss, Richard Stallman lists three levels of material harm caused by restrictions on distribution and modification:
- Fewer people use the program.
- None of the users can adapt or fix the program.
- Other developers cannot learn from the program, or base new work on it.
This freedom with software programs is interesting. Can this be extended to other forms of information like books?Edit
Yes. Most user manuals for free software programs, for example are released under either free or copyleft licenses. Already, much literature is available under permissive terms, such as the GNU Free Documentation License (GFDL) and Creative Commons Commercial-Attribution(-ShareAlike).
But unlike software, books and articles contains speech and personal opinion. And, personal credit for specific work is important. So, the benefit of unlimited modification is not always desirable in literature, science or other content. The open content movement accordingly focuses more on share-alike clauses.
These clauses are not restricted to those free software or open-source require. They include for instance the Creative Commons NON-Commercial licenses which prevent use by commercial parties unless they negotiate a parallel commercial license (which may also be a share-alike license or may be more like a proprietary license). Other share-alike clauses have been proposed to require specific processes of dispute resolution, scientific method or journalism be followed by creators of derived works.
Like the original free software foundation, each such clause would create a global consortium relying mostly on the license to enforce its rules and using the leverage of rights to use or improve the content as the leverage.
FSF itself has recognized the difference between open content and free software. The GNU Free Documentation License used by both Wikipedia and Wikibooks itself contains clauses that deny the right to use the content to anyone who does not credit authors or other contributors, but these are similar to the free software conditions. GFDL does clearly and explicitly permit commercial use and it supports annotations and "Invariant Sections" that can reliably qualify the origin or reliability of the material or summarize objections to it - though these are not used by Wikipedia or Wikibooks at present, they serve necessary purposes for those services that do not allow every user to edit.
History of Free SoftwareEdit
When did this whole free software thing start?Edit
Software sharing is as old as computers. But the Free Software Movement traces its history to a software sharing community at the MIT Artificial Intelligence Lab. Richard Stallman became a member of this software sharing community when he joined the lab in 1971.
In the early 1980s due to a series of events, the hacker community collapsed. Richard Stallman was one of the few hackers left out in the lab and he was faced with a stark moral choice. He could accept the world has changed and start using proprietary software. Or he could create a free operating system which could recreate a community of cooperating hackers. In short, he could either change himself or change the world.
Stallman decided to change the world. And thus the GNU (pronounced Guh-new, it rhymes with canoe) project, a free replacement for the Unix operating system was born. In January 1984, Stallman quit his job at MIT and began writing GNU software. One of the first pieces of GNU software that Stallman wrote was the Emacs text editor. Slowly more hackers joined Stallman and started putting together a complete body of free software. This ranged from tiny programs like ls and cp to the huge packages like the GNU compiler collection and the Bash shell.
Okay, but now what is Linux? When did that come about?Edit
Until 1991, most of the programs required to create a complete operating system had been created by the GNU project, except for one important piece - the kernel. In a nutshell, the kernel is software that provides secure access to a machine's hardware and decides what software get to use what hardware when. By then, a Finnish student named Linus Torvalds had written a free Unix compatible kernel called Linux (pronounced Lee-nux or Lin-ux). The kernel combined with the rest of GNU packages formed a complete usable operating system. Today this combination is called GNU/Linux, although it is often inaccurately called just Linux.
What is this open source thing?Edit
Open source is similar to free software. The biggest difference is that open source sees FLOSS as just a way of making better software, and doesn't value the freedom of the people.
How did open source start?Edit
In 1998, some free software developers figured that by keeping quiet about ethics and freedom, and talking only about the practical benefits of free software, they might be able to spread free software better, especially to businesses. The term "open source" is offered as a way of doing this.
Why are open-source and free/libre software often grouped together?Edit
Most (not all) open-source software can also qualify as free software, and vice versa.
What's better? Free Software or open-source software?Edit
The two terms virtually always apply to the same software programs, but free software as a movement is better, because it values your freedom and offers a superior model for software development, whereas open-source only advocates a development model.
How is Free Software actually made?Edit
The same way other software is made. People sit on the computer keyboard and type in commands and code and compile them.
To properly understand how free software is made, we need to have a good idea how all software – free and proprietary - is made.
Follow this link to find more about Who is doing it? http://widi.berlios.de/paper/study.html
Okay, how is software made then?Edit
A software program is simply a set of instructions to a computer to do something. Since the computer is a machine without any capacity to think for itself, it can only understand instructions written in a particular language – this format is called "object code". Unfortunately, to human beings, object code looks like gibberish. While they are creating software, humans use a particular format that they can easily understand called "source code". Source code uses letters, numbers and punctuation and, like any human language, can be understood by humans who learn to do so. So now we have source code, a format that programs are written in or created by humans but which looks like gibberish to a computer and object code – a set of instructions that a computer can understand but which look like gibberish to a human. A special program called a compiler transforms the source code into the object code. To reiterate, a human being writes down what it wants the computer to do in a format called source code. It's then translated into the only language that computers understand – object code. A special program called a compiler does this translation.
So now that I understand how software is made, how is free software made?Edit
Remember, most humans cannot easily understand object code. Therefore, if a human wants to closely study, modify or improve a piece of software, they has to have access to the source code of the software. Since being free to examine, modify or improve software is central to the concept of Free Software, it follows that humans have to have access to the source code of a piece of software for it to be considered free.
Unlike proprietary software where only the original software creators (or those they explicitly provide access) have access to the source code, anyone who is interested can get access to the source code of free software. Therefore, if a user of free software wants to modify or improve it, she is free to do so. In many cases, the people who make the improvements make the improved software available to the broader public via the Internet. By definition and in practice, people who, in most cases, are connected to each other just through the Internet create free software collaboratively. One critical aspect of the creation of free software that is often overlooked is the feedback in the form of complaints and suggestions from normal users. This feedback is actively sought and many tools exist that make it easy for lay users to integrate these complaints, bug reports and suggestions into the production methodology.
So how is this different from the production of other kinds of software?Edit
Typically, entities that produce non-free software usually have very tight restrictions on who has access to the source code of their programs and distribute their software only in object code format. The reason for this is that while it is very easy to compile source code into object code, it is very difficult to get the original source code from the object code. An analogy would be curds. While it's easy to make curds from milk, it's pretty much impossible to get milk from curds.
What kinds of people make free software?Edit
Many people who write free software are volunteers, they probably have an unrelated day time job. These people spend their free time developing free software.
Commercial organizations that benefit from free software distribution or that provide free software support also develop free software by investing portions of their profit. An example of such an organization is Red Hat.
There are many non-profit organizations that raise funds to develop free software, through donations from free software users. The Free Software Foundation is one such organization. Other examples are SPI, GNOME Foundation, Mozilla Foundation, and the like.
Some free software packages are developed by universities. The Festival text to speech engine, Octave - the Matlab clone are examples of software developed by universities.
Many commercial organizations also contribute to the development of free software, because these organizations benefit from the existing free software code base. For example IBM maintains the port of Linux to PowerPC CPUs, because it needs an OS for its CPU.
But I still don't understand why anyone would want to give away their work for free? What's in it for them!?Edit
For love or for money.
Yes, people do make money by releasing software created by them as free software. Corporate bodies like MySQL and Red Hat to name a few, make money because they release software created by them as free software (and offer support contracts for free software). And they do find that they are able to make more money than they ever would have made if they kept the software as non-free.
It's misleading to use the term "give away" to mean "distribute a program as free software". It implies the issue is price, not freedom. One way to avoid the confusion is to say "release as free software".
There are many reasons why people write free software. Some people might just want their work to spread out to the world. Many people would like to live in freedom. They contribute to free software so that they can continue to live in freedom. Some people write free software just for the fun of it. They love programming and hence use their programming skills to do something useful.
You might want to read Eric Raymond's paper titled Homesteading the Noosphere. Eben Moglen in his paper titled Anarchism Triumphant: Free Software and the Death of Copyright explains "Moglen's Metaphorical Corollary to Faraday's Law". This law also explains why people develop free software.
Arguments for using Free SoftwareEdit
I'm still not convinced. Surely a big computer company knows best when it comes to designing software? Why would I want to use software designed by an amateur?Edit
Free software is NOT created by amateurs. The free software development process is open and transparent. If you want to include your code into a free software project, it will be scrutinised by several people. Amateur and or badly written code will be rejected outright.
Though your assumption that "big companies" are better at designing software is questionable, "big companies" are free to develop free software too. And they do develop free software. For example Red Hat, Sun, Novell, and IBM, all develop free software.
If there are a group of people who would like to have a particular software written, they can bring together funds, hire a programming company, get the software written by professionals and then release it as free software. There is no reason why free software has to be written by amateurs.
Even if the free software designed by an amateur is inferior to the non-free software designed by a professional, you might want to use the free software because it gives you freedom, which is more important. Also, a better programmer who likes the idea could contribute to the project.
It is certainly not true that larger companies know more about designing software. They depend on a small group of programmers and are not generally in close contact with the users as in the case of free software. Thus, free software developers are often more aware of the needs of the users and their complaints about the existing versions. Some large companies allow technically incompetent marketing experts to make software design decisions that prioritize marketing requirements over user's needs and software soundness.
In any case, examinations of many free software applications show that today they are as good as or better than equivalent non-free applications, or are reaching there fast. And a large fraction of free software developers are not amateurs. And how do you know if the big company which sells non-free software did not hire an amateur programmer to write that code?
What we use depends on what we want. For computer users, software that can do the things they want done is a necessity. If such software does not exist, then they cannot do that particular kind of work. How well the work can be done, and how quickly, depends on the quality of the software and hardware available. It is, therefore, desirable to have software that enables the users to do the work with the least effort and to get the best possible output. These qualities of the software generally improve with time, the term 'standing on the shoulders of giants' applies to free software, so improvement begets improvement. Under non-free software it's always a matter of 'reinventing the wheel', or worse, to circumvent proprietary restrictions for another company or person to improve the code.
But more important than all these is the quality of freedom that the software has. If the software is restricted, and the company that makes it withholds all information about how the software is created and in what format the files are created, then the users become dependent on the company, and subject to exploitation. Because these are much more important in the larger context, it is important to use free software rather than non-free software.
But what about bugs? Surely free software is more likely to be virus prone?Edit
The question involves two different types of computer related problems - bugs and viruses.
Bugs are unintentional errors in programs. With free software when you find a bug in the program, you have the freedom to exercise freedom two, the freedom to help yourself and correct the program. If you are not a programmer you are free to report the bug to the maintainer of the software or hire any programmer and correct the program. You are not under the mercy of any single organization. By submitting the bug fixes to the maintainer of the package the software package becomes better and better.
Virus is a malicious program that infects other programs by embedding a copy of itself in them. For more on these security risks, see the section below.
Since the source code is available, won't it be easy for someone to find out a security loop hole and exploit it?Edit
Yes, but before the source gets to the hands of people who exploit loopholes, it passes through hands of people who develop free software. And they usually fix such loopholes.
And with free software, exploitation of a loophole is very, very, very quickly reported and fixed, often within hours.
Look at it this way, since the source is available, it would be easy for someone to find out a security loop hole, and make a patch for it, even before its exploited!
Also, the GNU operating system was designed with security in mind from the start.
So you're saying that free software actually evolves at a faster pace than non-free software?Edit
Free software tends to evolve extremely rapidly. This is primarily because of the way it involves its users, who contribute bug reports and even code patches to the tool's development. The path and the pace of development is extremely open and only features and issues that are needed ever get done. Release fast and release often is the main 'mantra' of this kind of development.
Note however that this benefits only tools which have reached the stage of being in popular use. Once this happens it is in the interest of the users too to promote and actually contribute to the development. In a way this ensures only the deserving and useful tools gets supported in this manner.
Contrary to popular assumptions this model is laissez faire in the truest and most efficient manner as possible. Demand and supply works best with more suppliers and consumers. And this is what happens here.
The pace of evolution is actually controlled by the popularity and the usefulness of the software. The more popular a piece of software is, the faster it evolves. In fact if something hinders this pace in any manner, like a dis-interested maintainer or an abandoned company, often other people step up as developers of the project. Or sometimes, forks of the project spring up (not that they don't always at other times) to continue with the development, under another banner since the original source is free to be used or maintained by anyone.
Compared to the isolated model of development employed by proprietary software, this is a tremendous plus. There exists no question about the continuity of the tool either, which is the ultimate barrier in the path of software evolution.
This concept is explained really well in Eric Raymond's paper The Cathedral and the Bazaar.
Free software is only something used by computer enthusiasts, right?Edit
Free software is used by people who value their freedom more than anything else.
Many millions of people the world over use free software without actually realizing it the moment they access popular sites on the Internet - see the section below.
Have any established organizations actually used free software to their advantage?Edit
- This page is hosted on a server running free software (GNU/Linux, Apache/1.3.29 (Unix), PHP/4.3.4).
- More than 98% of all the Domain Name Servers, which identify the machine on which a page (like http://wikibooks.org/) is situated, use free software called BIND.
- More than 80% of all web servers use free software, called Apache, to serve their sites. But sadly, since Apache isn't copylefted, many of these servers run proprietary versions of Apache.
- More than 60% of all network servers run the Linux kernel, another free software.
- The TCP/IP implementation on most computers, (including those running non-free operating systems) is free software.
- "Digital Domain used 105 DEC Alphas running Red Hat [GNU/]Linux to simulate and render water for James Cameron's Titanic" -- http://www.computer.org/computer/homepage/0202/ec/
Personal Relationship to Free SoftwareEdit
What kinds of problems might I expect to encounter using free software?Edit
Exactly the same kind of problems you face with non free software.
Some problems with free software today are,
- Incoherence. Take manuals for example. Some free software comes with info manuals, some with man pages, some with HTML documents, some others with plain text files, and yet others with only source code comments!
- Inability to use certain patented algorithms. But that is not a problem with free software as such.
- Non-availability of drivers for certain devices, especially "WinModems."
- Free software cannot be legally used (at least in the US) for certain activities that involve copy-protection techniques. This includes playing encrypted DVDs.
Okay, but why would I want to modify my software anyway?Edit
There are plenty of reasons. Say for example a software does not support your local language. You would like this software to be available in your local language so that you can use it. If the software is proprietary you will have to go and beg the "owner" of the software. If he finds making the change wouldn't be profitable, he will not make the change. With free software, you can make the change yourself or you can go to a programming company and ask them to make the changes for you (which is how Richard Stallman supported himself for some time). With free software you are not helpless.
Also consider this ever plausible situation. Some time during your education, you would have written a project, or thesis or dissertation. In all probability, you may have used a computer belonging to a friend or the university to create this work. There is no assurance that you would get the same software or package which you used to create this file a few years from now, when in a nostalgic mood, you decide to go through your past work. This is a time when you will feel like modifying whatever is available to read a new file format.
If you are any kind of organisation which needs (or as often happens, is obliged by law) to retain certain information over a long time, the right to modify your software through a third party vendor is 'the' most important right.
Look, I'm no computer whiz! Isn't it easier for me to just use packaged software? Who do I turn to when something goes wrong?Edit
Using free software is all the more important if you are not a computer expert. That way, you do not have to depend on the company from whom you purchased non-free software.
First, read the documentation that came with the software. If that doesn't help, try searching the web with a search engine like mozDex. Last try one of the things below.
If you are looking for "free of cost" help, there will always be a free software user group or Linux User Group in your locality. Find one. Or ask any of the innumerable mailing lists or forums which provide support. You will be surprised at the response and support you receive. One forum is Nuxified.org. There are more popular forums, however some don't set a good example - by having nonfree software (e.g. vBulletin) power their sites.
If you are willing to spend money, you can always hire a company or a consulting programmer to help you.
You can also buy support from expert companies. Since the software itself is open, the support vendor cannot lock you down like happens with proprietary software. You are always free to go to another support vendor.
Also if your requirement is pretty huge, it will be highly cost effective to have an in house software development and support team who will take the free software and customize it for your needs and constantly maintain it.
Several big companies do provide support for free software. Several big companies charge several times more than several individual or small companies for their services. Remember, in the free software scenario, you are paying only for the services, not the product or package. So, there will be immense savings, and companies or consultants who work on free software will always have less turnover, even if they are experts and market leaders in their field.
Plus a little-known company/person can gain a bad reputation.
Which GNU/Linux distribution (or distro for short) should I use?Edit
There are many publicly available GNU/Linux distros. Distrowatch maintains a list of distros with summaries of their features. Fedora Core (formerly Red Hat), OpenSuse and Ubuntu are popular ones for new users (listed in alphabetical order). There are also many more distros such as Damn Small Linux, Gentoo, Morphix, Slackware, etc.
Ubuntu is a distribution based on Debian GNU/Linux but aimed at being easy to use. They have non-free software available, but it is not enabled by default. It has a Live CD available, which allows you to test the distro without installing it on your computer.
OpenSuse is a powerful yet easy-to-use distro. Their Evaluation edition has non-free software, but the Open Source Software edition does not.
Fedora Core is also new-user friendly.
Try Debian if you are good with computers and have a little working knowledge of the GNU/Linux system. The primary strength of Debian is the sheer number of packages. It also has support for many different architectures. Debian also has distributions which don't use Linux as the kernel such as Debian GNU/Hurd and Debian GNU/kFreeBSD. Use these only if you are really interested in developing free software. Be warned though, Debian has nonfree software in its package repositories that are suffixed with "-nonfree.
To avoid non-free software you should avoid Mandriva (formerly Mandrake), MEPIS, KNOPPIX, Linspire... These distributions come with non-free software packages by default.
Depending on your needs there are even specialised GNU/Linux distributions. There is one which plays only Video CDs. There are several which are used only as firewalls. Some distros run from one or two floppy disks. Some distros are intended to be used as rescue disks. There are also distros even for musicians and Geographical Information Systems (GIS). Most major distros come with several Compact Disks, but you can have a running and usable system with usually the first one or two CDs.
Where can I find free software?Edit
Some good sources are:
Note: The next two also list non-free software, although most of it is free.
I have some software for Windows that I can't find a replacement for on GNU/Linux! Where can I find one?Edit
Okay, so how would I begin to install free software on my machine?Edit
Once again, the same way you begin to install non-free software on your machine. You can buy computers with free software pre-installed. Or you can get a friend to do it for you. Or find a professional to do it.
If you decide to do it yourself, try lots of different software until you find what you like.
Most distributions have a built-in way of easily installing software and finding all its dependencies, called a package manager. Some package managers are:
- Smart supports many types of repositories, including yum, apt, apt4rpm and urpmi.
- Yum for Fedora Core
- Apt for Debian
- Apt4RPM for RPM distributions
- Portage for Gentoo
- Ports for FreeBSD
How can I make software I've written free software?Edit
How can I make money off of free software?Edit
The easiest is selling free software. Be sure to explain to them that it's a matter of freedom, not price. Distributing this book with the software might be a good idea. Remember that if the software's under the GNU GPL and you distribute binaries, you must include the source with the binaries and/or offer the source separately.
You could also write free documentation and sell that. The same things in the above paragraph applies here.
Another way is, if you can write software, put yourself for hire to add/change something in free software. If you are the maintainer of the software, you could have people pay you to make a(n) addition/change higher on the priority list for the project. This is how Richard Stallman used to support himself, and he's still here.