Free software

From LibrePlanet
Jump to: navigation, search

Why should I care about software?

Our daily lives are increasingly mediated by digital technologies. Everything that powers our society—our media, medical devices, voting machines, communication, and so much more—depends on devices running software to control them. The way that software functions is determined by its "source code", and whoever owns that in turn controls our technology and has immense influence over our lives. When that source code is owned by someone else and kept secret, there's no way to know what it's doing or how it works. When someone else controls your software, you give them ultimate control over your computing.

How can we trust our technology?

We've seen the incredible advancements and social movements enabled by digital technology, but we must be mindful of its effects. Software ultimately leaves users at the mercy of whoever owns it, but we don't have to give up freedom for progress. Software shouldn't work against its users for profit and control. You should own your software. You should be in control.

Using free software is the only way to guarantee that. By using free software, you gain autonomy over your own computing and are protected from the surveillance, monopolism, and other malicious features in non-free software.

When it comes to software, there's a world of possibilities that opens up when you embrace the concept of free (as in freedom) software. Free software empowers you, giving you control over your digital life and respecting your rights as a user.

Unlike proprietary software, which limits your ability to modify or share the software, free software grants you the freedom to use, study, modify, and distribute it as you see fit. Let me highlight some of the key benefits and reasons why free software is a game-changer:

  • Empowerment: With free software, you have the power to understand how the program works, make changes to suit your needs, and contribute back to the community. You're not just a passive user; you can actively shape the future of the software you rely on.
  • Privacy and Security: Free software is often developed with a strong focus on security and privacy. The open and transparent nature of its development allows for thorough peer review and auditing, reducing the risks associated with hidden vulnerabilities or malicious code.
  • Collaboration and Community: Free software fosters a vibrant and collaborative community of like-minded individuals who share their knowledge, expertise, and passion for technology. By joining this community, you can learn from others, engage in discussions, and contribute to projects that align with your interests.
  • Cost Savings: One of the most significant advantages of free software is its cost-effectiveness. You don't have to pay expensive licensing fees or worry about recurring subscription costs. This accessibility makes it an excellent choice for individuals, businesses, educational institutions, and non-profit organizations alike.
  • Longevity and Independence: With free software, you're not at the mercy of a single vendor or company. Even if a project is discontinued or a company goes out of business, the software remains available for users to continue maintaining and improving. This long-term sustainability ensures that you're not locked into a specific product or service.

So, whether you're a developer looking to contribute to an open-source project, a user concerned about privacy and control, or a business seeking flexibility and cost savings, free software offers an incredible value proposition.

What is free software?

Free software is software that you can use, study, share, and improve without any restrictions. It's like a toy that you can play with and share with your friends, but you're also allowed to take it apart and see how it works.

Imagine you have a puzzle that you really like. You can put the puzzle together as many times as you want, and you can even give it to your friends to play with. But you're also allowed to take the puzzle apart and see how it's made, or even change it and make it better. That's what free software is like - you can use it and share it with others, but you're also allowed to look at the code and change it if you want to.

Free software is different from other software that you might have to pay for, or that has strict rules about how you can use it. With free software, you have freedom - the freedom to use it, study it, share it, and improve it. That's why it's called "free" software.

The term "free" does not necessarily mean that the software is available at no cost, although many free software programs are also available for free.

How it works?

Let’s say I’m a carpenter. While I’m working on the furniture for a dining room someone asked me to produce, I stumble across the need of inventing something that allows people in the room to sit down. So I come up with a chair. It’s a rather simple chair, with no armrests and nothing fancy, but it suits my need: allow people to sit down. Yay, problem solved. Now, I can keep my brilliant invention secret and be jealous about my precious, OR I can share it with the world of carpenters.

Why would you share it?

Because it could help someone solving the same problem I encountered. Because after, say, a few days, or months, or even years, my chair could come back to me with a good ol’ pair of armrests, that were made by another carpenter out there in the world. Someone who borrowed my chair, worked on it and shared its improvements back in turn. That can happen over and over, the more problems my chair solves, the more people will work to improve it, maybe giving it a more comfortable back or more functional legs. That way we can develop together the best chair possible for that particular situation. And because it feels so good to take part in something like that.

It is this part of community, but it is not the most important part of all of this. The key reason is that the program is not solely controlled by its owner. And here we come to a certain abstraction which in this breakneck analogy may raise objections: But why should the owner of the chair not have the right to dispose of his property?!. This is not the point. He can use it in any way he wants, the problem begins when the owner dictates how to use the chair he distributes, others. This is where the problem of the Free Software Foundation, founded by Richard Stallman, begins.

Who gives the instructions to your computer[1]? You may think that he is following your instructions when he really obeys someone else first, and only as much as the program owner allows him to listen. In the case of software, there are two possibilities: Either the users control the program, or the program controls the users. It is inevitable one or the other. For users to be able to control a program, they need four fundamental freedoms:

  • Freedom 0: The freedom to use the program for any purpose.
  • Freedom 1: The freedom to study how the program works, and change it to make it do what you wish.
  • Freedom 2: The freedom to redistribute and make copies so you can help your neighbor.
  • Freedom 3: The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits.

The first and third freedoms can only be fulfilled when the source code[2] of the software[3] is available

Each program usually takes two forms. It is in a form that you can read and understand if you know the programming language[4]. This is the source code. This is what the programmers write and change. Then there's the executable, which is a set of numbers that even a programmer can't figure out. If all you get is an executable[5] then it's a terrible pain in the butt to find out what it does, and even harder to change it. So, to give you a real opportunity to learn and change, they have to give you the source code. This is a requirement.

Now you may be asking yourself the question "if it is possible to find out what a program does even without the source code, it's probably okay?" To imagine why this is problematic, let's create a simple example: You go to a restaurant and order soup. For example, let's say vegetable soup. Well, ordering yourself such a vegetable soup, for example, you would like to cook such soup at home. This is where the problems begin. Most of the software we use can be closed software, i.e. one in which we cannot see the source code, i.e. we cannot see the recipe for our soup. We just get ready-made soup and we don't really know what's in it. Of course, if we would like to cook a soup such as Adobe Photoshop, then looking at this soup we see "mhm, well, there are such elements here, such elements" and we can try repeat this soup, but we do not know how much someone for example, he gave salt, we don't know how much pepper someone gave, we don't know how long this soup was cooked. And free software works more in such a way that as soon as you order a soup, you get the recipe for this soup and ready-made ingredients, and you can cook it yourself.

With these two freedoms, each user individually can make a copy and start changing it and making it do what they want. This is individual control. But what if you are not a developer? You are looking at the source code and you don't understand it. Individual control is not enough. We also need collective control, which means that each group of users can work together to tailor the program to what they want. Of course, some of them in the group are programmers. They actually write the changes, but they do it as part of the group for what the group wants. Of course, the group doesn't have to be everything. Others may use it in other ways. Everyone can do it. Thus, collective control requires two more essential freedoms.

If you have all 4 freedoms then it is free software, the users control the program. But if either of these freedoms is missing, then the users don't control the program. Instead, the program controls the users and the developer controls the program. So it means that this program is an instrument of unfair power of the developer over the users. This means that users have no freedom, that is, non-free proprietary software that we must get rid of.

What is copyleft?

Copyleft is a legal concept that allows creators to share their creative work under certain conditions that promote freedom and sharing. Specifically, it is a method of using copyright law to remove restrictions on the use and distribution of creative works.

The term "copyleft" was first coined by Richard Stallman, the founder of the Free Software Foundation, in the 1980s. It is a play on the word "copyright," but instead of reserving all rights to the creator, it flips the concept to allow for the free distribution and modification of the work.

In practice, copyleft is achieved by attaching a license to a work that grants users the right to freely use, modify, and distribute the work, as long as they agree to do the same for any derivative works they create. This is often referred to as a "share-alike" license or a "viral" license, because it requires anyone who uses or modifies the work to share their changes under the same terms.

One of the most well-known copyleft licenses is the GNU General Public License (GPL), which is commonly used for free software. The GPL ensures that any modifications or derivative works of the software are also free and open-source, and it prevents any individual or organization from restricting others from using or modifying the software.

External links

what does that actually mean...

  1. a computer is a universal machine that can be programmed to automatically perform a sequence of arithmetic or logic operations. Modern computers can perform general sets of operations known as programs. These programs enable computers to perform a wide range of tasks.
  2. Source code - You already know what a program is, you already know what a programming language is, and now I will tell you about a concept that naturally arises from the previous two, i.e. what a code is source. Simply put, it's just the content of all the instructions that we type in to make the program work. And such source code is usually written in a specific programming language in which it is understandable by a human. In other words, it is the set of program instructions, the content of all those instructions, what a programmer needs to type in order for our program to run. Basically, most programming languages are plain text.
  3. computer program and related term software - is a set of instructions that tells a computer or other device what to do. It's like a recipe that tells you how to make a cake - the recipe is a set of instructions that tells you what ingredients to use and what steps to follow in order to make the cake. In the same way, software is a set of instructions that tells a computer what to do. For example, if you want to play a video game on your computer, you need to have the right software installed. The software is like the instructions that tell the computer how to run the game, display the graphics, and play the sound. Software can be used for all kinds of things, from running games and applications to controlling robots and medical devices. It's an important part of how computers and other devices work, and it helps us do all kinds of things that wouldn't be possible without it.
  4. Programming language - instructions (programs) for a computer are most often written using a programming language, so you cannot write these instructions in any way, for example in Polish, English or a normal human language, it must be written in such a way that the computer understands it. So you need some programming language to write this whole set of instructions.
  5. Executable file or machine code - This is the language understood by the computer's processor. The processor is in every computer, be it a desktop computer or a smartphone, it all works thanks to the fact that it has a processor and all this machine code, it is the language in which our equipment works, the language in which our processor works. First of all, it is a language intended for the machine, unreadable for a human, i.e. the processor is able to read and understand this machine code, but we will rather have problems with that, it will be rather unreadable for us. And above all, the very commands that we write in plain programming language are converted into machine code that the computer can understand. Because the computer only understands this machine code, it does not understand directly all the instructions that we write in any programming language, they just have to be converted from this normal programming language to the output machine code first, so that the processor can understand all these instructions, commands, understand .