What is Open-Source?
Often, particularly in the maker community, the term open-source gets thrown around. There's open-source hardware and open-source software. Many Linux operating systems (OSes) for instance are open-source. But there's also free and open-source. Learn all about what open-source is, the difference in free and open, why you should contribute to open-source communities and projects, plus more!
What is Open-Source?
The phrase open-source means something modifiable and shareable through publicly available. Although this term first began in reference to software programs, it's now expanded to include a range or projects, values, and principles. Hardware may be open-sourced, such as 3D printing designs that may be downloaded, modified, and shared. The core principles that govern open-source projects are centered on collaboration, enabling prototypes, and community-centric development.
With open-source software, the source code is freely available for anyone to view or modify. Basically, source code is the behind-the-scenes portion of an application that users don't see, but programmers may manipulate to alter or enhance how an app functions. Open-source software features similarities and differences from closed-source software. In a proprietary software model, some source code remains siloed so that only one individual, team, or organization owns and maintains it. As such, only the owners of that closed-source software may legally copy, edit, and share that code. Moreover, users are required to sign a license agreement that they will not share or modify the source code in any way. On the flip side, open-source software makes its source code easily accessible so that any user may copy, edit, and share it. There's still a license agreement, but user permissions generally allow for use in virtually any purpose.
In the spirit of open exchange, some open-source projects maintain what's known as a copyleft license. A copyleft license mandates that a modified open-source program must also include the source code for that app along with it. And in some cases, an open-source license dictates that modifying and distributing a program allows for sharing the source code of that program for free.
Open-source definition: Refers to both open-source software and hardware, and connotes a set of guiding principles with an emphasis on transparency, collaboration, community-centered development, and open exchange. Source code or files are freely available to view, modify, and share.
What is open-source:
- Open-source means that the source code, or backend code that's not publically-facing, is free to view, modify, and distribute
- Refers to both software and hardware
- Emphasis on collaboration, community-focused development, and transparency
- Still includes a licensing agreement
How Did Open-source Begin?
Although open-source projects have become incredibly popular in recent history, the origins of open-source date back to the 1950s and 60s. The Advanced Research Projects Agency Network, or ARPANET, which eventually morphed into the current Internet's foundation, developed a peer-review process. It encouraged different user groups to collaborate and iterate upon each other's source code. Primarily, this collaboration was forum-driven, which translated smoothly to the introduction of the Internet.
Free vs. Open: Does Open-source Mean Free?
There's often a misconception that open-source inherently means free. Free open-source software (FOSS) doesn't necessarily mean free to own, but rather free to use as you wish. Indeed, many open-source projects are free to download and use such as many Linux distros. But FOSS often gets confused with free to own. One of the best examples is Red Hat. Red Hat is a great example. Although Red Hat Enterprise Linux (RHEL) is based on open-source components including the Linux kernel, there's a software and infrastructure suite allowing users to license its Red Hat-branded Linux OS for deployment in enterprise settings. Developer versions are freely available which, while fine for testing purposes, are unsuitable for business use since they're developer releases, not stable versions. Since RHEL includes customer support, cloud services, managed solutions, and a slew of other features, its operating system remains open-source. It's the infrastructure that users pay for. In fact, Fedora and CentOS are free-to-use Linux distributions based on RHEL.
For-profit open-source projects exist. Take the popular programming website Dev.to as an example. While DEV is open-source, it's also a for-profit company. The idea reconciles principles of knowledge-sharing and empowering community with turning a profit. Perhaps one of the most unique open-source examples is Prusa, a hardware company. The Prusa i3 and Prusa Mini are both open-source printers. You can purchase or print the parts to create your own Prusa clone. And in fact, you'll find many Prusa i3 clones or derivatives on the market. It may not be easy to build an i3 clone from scratch, but theoretically you could. The open-source community boasts tons of money-making means, so while the two are often associated, open-source does not mean not for profit.
Linux and Open-source
Although open-source may refer to hardware and software of all types, open-source and Linux share a special relationship. And in fact, even the term open-source often conjures up images of Linux operating systems. The Linux kernel is open-source and therefore freely available to anyone. Linux as a term refers not to an operating system per se, but rather the Linux kernel which serves as the foundation of Linux distributions. Linus Torvalds created Linux in 1991 as a free, open-source Unix-like operating system. Since then, a slew of Linux distributions spawned including Debian, Ubuntu, Manjaro, and Pop!_OS. While Linux refers to the kernel, many users mean GNU/Linux when dropping the term Linux. GNU/Linux essentially is a distro based on the Linux kernel that includes various components such as a desktop environment and application menu. Linux source code remains copyrighted and licensed under the GPLv2 license, or General Public License. So while the Linux kernel is open-sourced, all Linux distros are not open-source. Some such as Ubuntu, Debian, and CentOS are fully open-source, whereas Red Hat Enterprise Linux is not.
Linux and open-source: The Linux kernel is open-source, and while many Linux distros are open-source, not all Linux OSes are open-source.
What are the Benefits and Downsides of Open-Source Software?
Open-source carries many benefits. For one, there's increased control over an application or a project. Increased code transparency comes through open-sourcing. Since virtually anyone can view and modify open-source code, it's possible to have more stable and secure software because of a wider userbase. In theory, more programmers working on a project translates to an uptick in fixed bugs, vulnerabilities, and improvements. And without the reliance on a single organization or entity, users may benefit from long-term development. Plus, with an open code base, knowledge sharing means that programmers have the opportunity to examine open-source code that's publically available to contribute to that project or merely learn from it. And open-source projects often instill a sense of community. Being able to download, examine, and modify a code base inspires a sense of ownership.
Yet open-source projects may have some downsides. A notable disadvantage of open-source software or hardware is support. Whereas closed-source software often features dedicated support, the open-source community relies on forums, first- and third-party documentation, or GitHub pages. As such, popularity is a major factor. Lesser-known open-source projects may suffer from lack of support. And this directly correlates to usability. Set up, user-interfaces, or driver compatibility may be excellent or terrible. What's more, without a budding community policing and monitoring the code base, vulnerabilities and exploits might occur in open-source software whether from malicious parties or good-intentioned but poorly-trained programmers.
Open-source pros:
- Strong community
- Stability
- Security
- Knowledge-sharing
Open-source cons:
- Support
- Potential vulnerabilities
- Not necessarily user-friendly
What are Some Popular Open-source Alternatives to Closed-source Software?
Tons of open-source alternatives to closed-source software exist. The most obvious examples hail from the Linux community. Linux distros such as Debian, Ubuntu, Arch Linux, and the bevy of other OSes available are viable Windows or macOS alternatives. GIMP, or GNU Image Manipulation Program, is a cross-platform Photoshop alternative that's free and open-source. For a FOSS Microsoft Office competitor, the aptly-named OpenOffice or LibreOffice work extremely well. Mozilla's Firefox web browser, the PHP scripting language, Apache HTTP web server framework, and the Python programming language are all open-source examples as well.
Open-source examples:
- Many Linux distros i.e. Ubuntu, Debian, Arch Linux, openSUSE, Manjaro
- Mozilla Firefox
- LibreOffice
- OpenOffice
- GIMP
- Python
- PHP
- Apache HTTP web server
- WordPress
Why You Should Contribute to Open-source Projects and How You can Get Started
There are loads of reasons to contribute to open-source projects. Even though you might not get paid, it's a great way of giving back to the community. And although it's a common misconception, you don't even need to be a programmer or developer to contribute to open-source projects. If you enjoy using a particular open-source application, giving back helps maintain that tool you love using. You can accomplish this through something as simple as reporting any bugs in forums, writing reviews of that software, answering questions in forums, or authoring help documents. And of course making edits to the code base such as enhancements, bug fixes, vulnerability patches, and implementing feature requests is incredibly helpful.
By remaining active in open-source communities and contributing in whatever way you can, you'll ensure the longevity of that product. Downloading and examining open-source code allows you to learn through hands-on experience. And contributing to open-source projects offers an invaluable benefit of understanding technology at a deep level. While individuals can, and should, contribute to open-source projects, companies may reap rewards by pitching in as well. Many tech companies rely on open-source software, and contributing allows them to implement business features that enrich the overall software experience.
You can go about finding open-source projects to contribute to by looking at your arsenal of software and apps. If you're using a Linux distro such as Ubuntu, you can get active in the community. Retro gaming enthusiasts can contribute to projects like RetroPie, Recalbox, Lakka, and Batocera. The options abound. Chances are, you're already using at least a few open-source products whether you know it or not.
Why you should contribute to open-source projects:
- Learning opportunity
- Give back to the community
- Add business features
- Ensure the longevity of a project
- Valuable software development insight
How to contribute to open-source projects:
- Code commits
- Bug fixes
- Adding features
- Getting active on forums
- Authoring help documents
- Writing reviews of and promoting open-source projects
What is Open-source and Why Should You Care - Final Thoughts
Open-source, though a term thrown around a lot, isn't always understood by its users. There are often misconceptions such as free and open-source meaning free to use. On the contrary, there are many for-profit companies with open-source products, such as Red Hat with its RHEL offering. While open-source often refers to software, hardware may be open-sourced as well such as 3D printer designs. The term open-source has a much larger meaning, with an onus on community, knowledge sharing, transparency, and collaboration. Now that you understand what open-source really means, it's a great time to get involved and give back to the community!
Your turn: What are your favorite open-source projects?
Leave your feedback...