If you're a newcomer to the community, these terms can be confusing. Many people use them interchangeably, yet supporters of either draw a clear line of distinction between the two. What do these mean? Why are there two? And what is the difference? These are the questions I'll be looking at today, because the answers are not entirely obvious.
Free software is a brainchild of Richard Stallman, a man of great passion and reputable beard. He's the father of the GNU project and founder of the free software movement of over 30 years ago that were born of his frustration with the limitations of proprietary licenses imposed on users by companies at that time. Software grew more complicated and became an expensive endeavour which lead companies to treating the source code as their asset, making everything they could to keep it private. And while that might have looked like a good idea for business (or so they thought at the time), it wasn't great for their users and developers.
The definition states that a program is considered to be free as long as its users have the freedom to:
- run it,
- study it,
- redistribute it,
- improve it and release the improvements to the public.
The idea behind these essential freedoms is to put the user in control of their computer and the software they run, not the manufacturer of it.
Strongly associated with free software is the principle of copyleft. Free software on its own doesn't implement any mechanism to make sure it will remain free. Someone could get a copy, modify it and distribute without the same freedoms as the original author did. That worried Stallman and that's one of the reasons why the idea of retaining the freedoms became an important principle of the free software movement.
Just as copyright ensures that nobody distributes the content without permission, copyleft ensures that nobody will distribute free software without retaining all of its freedoms. This is accomplished through the licence under which the software is distributed. Depending on the terms, this requirement may extend onto the whole software package and to other packages which interface with the copylefted program. Under some licenses, you're not even allowed to make calls to copyleft libraries if your module is proprietary.
A typical example of a copyleft license is the GNU General Public License.
Mind you that at no point there wasn't any mention of price. Everyone can redistribute free software and it's entirely their choice whether they ask money for it. As Richard's Stallman famous phrase goes: "It's free as in freedom, not beer."
Christine Peterson coined the term open source at a meeting of a group of people from the free software movement in California in 1998, following the release of Netscape communicator. They met with the goal to bring the ideas and benefits of free software to the commercial software industry.
They saw the social activism and moral implications of free software to be a barrier for comercial adoption. To illustrate Richard Stallman's attitude: he did say at some point that proprietary software is a crime against humanity. It's not difficult to see why businesses might be reluctant to consider the benefits of free software over such claims. After all, most of the software was proprietary at the time.
The group decided to rebrand the movement, highlighting the benefits that sharing and collaborating on code has for businesses.
The definition of open source bases heavily on the principles of free software, yet its philosophy is fundamentally different. There are ten criteria that a project must meet in order to be considered open source.
In a nutshell, the project's source code must be available to everybody without discrimination and restrictions, with the right to modify and redistribute it. Contrary to free software, the open source movement doesn't implement copyleft to enforce that these are retained. Strangely enough, this gives the users of your software a little more freedom, letting them integrate any open source project with proprietary code without restrictions.
The free software movement strives for the ideal that all software in the world should be free. Ideals, however, are often hard to implement in practice and that's where open source comes in. Richard Stallman summarised the difference in one sentence: "Open source is a development methodology; free software is a social movement."
What's important is that after decades of hard work between both movements, the ideas of freedom and open collaboration are no longer a thing for a bunch of socially awkward hippies to talk about when they leave their dingy basements. These are the mainstream and ignoring them means seriously missing out.
Last year, we saw Microsoft, the past arch enemy of openness release the sources of their .NET and Visual Studio. The Microsoft GitHub account has close to 200 repos on it. Apple, who's known for their politics of control, will be making Swift 2 open source later this year. And this trend is here to stay.
Question: Which philosophy is closer to your heart? The ideals of free software or the unrestricted accessibility of open source? Share your thoughts in the comments section below.