Open-source software doesn’t typically cost any money to download or use, and can be freely distributed by anyone. Most people would call this free software, and from a monetary perspective that would be correct. However, from a licensing and use perspective, this is not the case. So what does it mean to be open-source, and what is free software?
To understand what open-source software is requires an understanding of how software is created. Think of a program like a cake. The finished cake is the program that is eaten (run) by you (the computer). The ingredients are the source code, and the baking is a process called compiling. Much like a cake starts out as a collection of different ingredients, a program also starts out as a collection of code. You, wanting to eat a cake, would not simply eat all of the ingredients together, since even together they would not taste like a cake. The ingredients must be mixed in certain proportions, in a certain order and baked to produce a cake. Similarly, source code is written as human-readable code, and must be compiled in order to produce machine-readable code. Open-source software is software in which the source code (the ingredients and the recipe) is made publicly available.
There are many benefits to this approach. When software is open-source, other developers can collaborate with the original developer to make changes to the software. Similar to sharing the recipe for a cake, another baker could make changes to the recipe to make a cake softer or sweeter, or even to change a vanilla cake into a chocolate cake. With software, collaboration can lead to fixing more bugs, new features, and other improvements. As with a cake, if a baker added ingredients to a recipe that were harmful or toxic, other bakers would recognize that and reject those changes. When compared to closed-source software, this transparency creates trust in the developer and the software, since all the components of the software can easily be reviewed by anyone.
Then why is open-source software free? The short answer is that it isn’t. Open-source only means that the software’s source code is openly available to the public. Most developers that distribute open-source software do not charge anything for the software, since anybody with the source code could easily redistribute that code or the compiled program and not charge anything for it. You may be asking yourself why anybody would spend time developing software and not charge any money for it. Some developers write code as a side projects or a hobby in their spare time. Sometimes it is for personal use initially, and later they distribute the code for other people to use. Many developers like this will ask for donations in order to help fund the development of the software. Other times, the software is distributed as open-source, but the developer may charge a fee for services or additional functionality of the software. Services might come in the form of technical support or consulting. A good example of this is Red Hat, Inc., which distributes a version of Linux called Red Hat Enterprise Linux (RHEL). Linux itself is open-source software, but RHEL includes many additional features developed by Red Hat, and while the source code is freely available, the compiled software is only available from Red Hat. Red Hat also sells support for their software. The revenue generated by this helps to fund Red Hat’s development costs, which is extremely beneficial to Linux, as Red Hat is one of the largest contributors to the Linux project.
So, if open-source software isn’t free, then what does “free” mean? Free software refers to software which is distributed without any restrictions on usage or redistribution. Free software can be downloaded and used by anybody, in any way. Free also means that anybody can study, modify, and redistribute the software in any way that they want. Most software that is open-source is also free, because both distinctions share a mindset that developers who develop free or open-source software hold. As the Free Software Foundation puts it, “To understand the concept, you should think of ‘free’ as in ‘free speech,’ not as in ‘free beer’” (or free cake).
To learn more about free and open-source software, visit these sites:
The Free Software Foundation
Open Source Initiative
What is Free Software? – GNU Project
Free and Open-Source Software – Wikipedia
Karen is our Vice President of Human Resources. Try her recipe for delicious cake:
½ cup (1 stick) butter, softened
1-1/2 cups granulated sugar
2 cups all-purpose flour
3 teaspoons baking powder
1/4 teaspoon salt
3 large eggs, room temperature
1 cup milk, room temperature
1 teaspoon vanilla extract
1/3 cup butter, softened
4 ounces cream cheese, room temperature
4 cups confectioner’s sugar
2-4 tablespoons milk, room temperature
1/2 teaspoon vanilla extract
- Cake: Preheat oven to 350 degrees. Grease and flour two 8-inch round cake pans.* Combine flour, baking powder, and salt in a small bowl. In a large bowl, beat together butter and granulated sugar with a mixer on medium speed for 2 minutes. Add eggs, one at a time, and beat well, scraping down sides of bowl as necessary. Reduce speed to low and gradually add flour mixture, beating until combined. Add milk and vanilla and beat until just combined. Do not overmix.
- Divide batter between pans and spread evenly. Bake until golden and a toothpick inserted into centers comes out clean, 28 to 35 minutes. Let cakes cool in pans on wire racks 10 minutes. Loosen sides with a knife and turn out cakes onto racks to cool completely.
- Frosting: Beat together butter and cream cheese with a mixer on medium-high speed for 1 minute. Reduce speed to medium. Add confectioner’s sugar, 1 cup at a time, beating well after each addition. Add 2 tablespoons milk and vanilla and beat until fluffy, about 3 minutes, adding more milk to achieve your preferred spreading consistency.
- Place 1 cake layer on a cake plate and spread with 1 cup frosting. Place remaining cake layer on top. Spread top and sides of cake with remaining frosting,
*To reduce the chances of the cake sticking to the pans, you can also cut out wax-paper circles to the size of your pans. Grease the pan, cover with one of the circles, and then grease and flour the circle.