Geeks often describe programs as being “open source” or “free software.” If you’re wondering exactly what these terms mean and why they matter, read on. (No, “free software” doesn’t just mean that you can download it for free.)
Whether a program is open-source or not doesn’t just matter to developers, it ultimately matters for users, too. Open-source software licenses give users freedoms they would not otherwise have.
Image Credit: Quinn Dombrowski on Flickr
The Definition of Open Source
If a program is open-source, its source code is freely available to its users. Its users – and anyone else – have the ability to take this source code, modify it, and distribute their own versions of the program. The users also have the ability to distribute as many copies of the original program as they want. Anyone can use the program for any purpose; there are no licensing fees or other restrictions on the software. The OSI has a more detailed definition of “open source” on its website.
For example, Ubuntu Linux is an open-source operating system. You can download Ubuntu, create as many copies as you want, and give them to your friends. You can install Ubuntu on an unlimited amount of your computers. You can create remixes of the Ubuntu installation disc and distribute them. If you were particularly motivated, you could download the source code for a program in Ubuntu and modify it, creating your own customized version of that program – or of Ubuntu itself. Open-source licenses all allow you to do this, while closed-source licenses place restrictions on you.
The opposite of open-source software is closed-source software, which has a license that restricts users and keeps the source code from them.
Firefox, Chrome, OpenOffice, Linux, and Android are some popular examples of open-source software, while Microsoft Windows is probably the most popular piece of closed-source software out there.
Open Source vs. Free Software
Open source applications are generally freely available – although there’s nothing stopping the developer from charging for copies of the software if they allow redistribution of the application and its source code afterwards.
However, that’s not what “free software” refers to. The “free” in free software means “free as in freedom,” not “free as in beer.” The free software camp, led by Richard Stallman and the Free Software Foundation, focuses on the ethics and morals of using software that can be controlled and modified by the user. In other words, the free software camp focuses on user freedoms.
The open-source software movement was created to focus on more pragmatic reasons for choosing this type of software. Open-source advocates wanted to focus on the practical benefits of using open-source software that would appeal more to businesses, rather than ethics and morals.
Ultimately, both open-source and free software advocates are developing the same type of software, but they disagree on the messaging.
Types of Licenses
There are many different licenses used by open-source projects, depending on which the developers prefer for their program.
The GPL, or GNU General Public License, is widely used by many open-source projects, such as Linux. In addition to all the above definitions of open-source, the terms of the GPL specify that, if anyone modifies an open-source program and distributes a derivative work, they must also distribute the source code for their derivative work. In other words, no one can take open-source code and create a closed-source program from it – they must release their changes back to the community. Microsoft referred to the GPL as being “viral” for this reason, as it forces programs that incorporate GPL code to release their own source code. Of course, a program’s developers can opt not to use GPL code if this is a problem.
Some other licenses, such as the BSD license, place less restrictions on developers. If a program is licensed under the BSD license, anyone can incorporate the program’s source code into another program. They don’t have to release their changes back to the community. Some people see this is being even more “free” than the GPL license, as it gives developers the freedom to incorporate the code into their own closed-source programs, while some people see it as being less “free” because it takes rights away from the end users of the derived program.
Benefits for Users
This isn’t all dry, unimportant stuff that only matters to developers. The most obvious benefit of open-source software is that it can be had for free. The example of Ubuntu Linux above makes that clear – unlike Windows, you can install or distribute as many copies of Ubuntu as you want, with no restrictions. This can be particularly useful servers – if you’re setting up a server, you can just install Linux on it. if you’re setting up a virtualized cluster of servers, you can easily duplicate a single Ubuntu server. You don’t have to worry about licensing and how many instances of Linux you’re allowed to run.
An open-source program is also more flexible. For example, Windows 8’s new interface disappointed many long-time desktop Windows users. Because Windows is closed-source, no Windows user can take the Windows 7 interface, modify it, and make it work properly on Windows 8. (Some Windows users are trying, but this is a painstaking process of reverse engineering and modifying binary files.)
When a Linux desktop like Ubuntu introduces a new desktop interface that some users aren’t fans of, users have more options. For example, when GNOME 3 was released, many Linux desktop users were equally turned off. Some took the code to the old version, GNOME 2, and modified it to make it run on the latest Linux distributions – this is MATE. Some took the code to GNOME 3 and modified it to make it work in a way they preferred – this is Cinnamon. Some users just switched to existing alternative desktops. If Windows was open-source, Windows 8 users would have more choice and flexibility. Just take a look at CyanogenMod, a popular, community-driven distribution of Android that adds features and support for new devices.
Open-source software also allows developers to “stand on the shoulders of giants” and create their own software. Witness Android and Chrome OS, which are operating systems built on Linux and other open-source software. The core of Apple’s OS X – and therefor iOS – was built on open-source code, too. Valve is furiously working on porting their Steam gaming platform to Linux, as this would allow them to create their own hardware and control their own destiny in a way that isn’t possible on Microsoft’s Windows.
This isn’t an exhaustive description – entire books have been written on this subject – but you should now have a better idea of what open-source software actually is and why it’s useful to you.