What is Open-source software?
We all have come across the term ‘open source software’ and always wonder what it is actually about. Well, in basic terms, it means the software or program that anyone can inspect, modify and enhance; the source code of which is provided and licensed by the author. It promotes free flow of ideas and advancement in technology. It also saves the hassle of producing code from scratch. Let us dive a little deeper into this.
Brief History of Open-source
During the 1950s and 1960s, software like operating systems and compilers that came packaged with computer hardware were free by default in keeping with the academic principles of knowledge sharing. This allowed users to modify the source code to fix bugs and add new functions. However as operating systems evolved, software costs increased. This caused developers to copyright the source code and legal restrictions were set in place to only allow licensed use of this software. Such closed-source practices were very popular in the 1970s and 1980s.
In response, Richard Stallman founded the GNU Project in 1983 so that people could use computers using only free software. The GNU Project went on to develop the GNU Compiler Collection(GCC) and the GNU General Public License(GPL).
In 1991, Linus Torvalds started development of the Linux kernel whose second version was released under a GPL license, making it open source. This kernel was integrated with the GNU system and is referred to as the GNU/Linux operating system which made open-source very popular.
Famous Open-source Projects and Software
- Linux kernel: The Linux kernel is a free and open-source UNIX-like operating system kernel. It is used in all sorts of computer devices like mobiles(Android), embedded devices, personal computers, servers, mainframes and supercomputers. Many popular Linux-based operating systems today like Debian and Arch Linux are based on the original GNU/Linux operating system. These OSes exist as an alternative to Windows and macOS. For more info check their official website here.
- Mozilla Firefox: Mozilla Firefox is a free and open-source web browser. It is popular as a privacy focused alternative to Google Chrome which also offers more customization options while having comparable performance. For more info check their official website here.
- Git: Git is a distributed version-control system that is used to track changes in source code during software development. It is used for coordinating work among programmers and to track changes made to files. Git is suited for non linear development and efficiently handles large projects. For more info check their official website here.
- LibreOffice: Libreoffice is an open-source alternative to Microsoft Office with support for documents, spreadsheets, presentations and mathematical formulae. It also offers good compatibility with documents created in Office, making it a very popular choice as a free alternative. For more info check their official website here.
- VLC Media Player: VLC Media player is a free and open-source media player and streaming media server. It is widely popular today because it works right out of the box and is available for a variety of operating systems and mobile platforms. For more info check their official website here.
What is the difference between Freeware, OSS and FOSS?
OSS is the abbreviation for Open Source Software. FOSS stands for Free and Open Source Software. Although both terminologies refer to a similar group of licenses and software, each term alludes to different underlying ideologies and philosophies pertaining to freedom .
OSS always provides full access to the source code and nearly all OSS is free of charge but there are a few exceptions. Non-free services may be offered alongside OSS. However most OSS are also FOSS and available under licenses like MIT, GPL, Apache, etc. These licenses fall in the category of FOSS. FOSS are always free.
There is also a significant difference between freeware and OSS. Freeware is free of cost but unlike open-source, it does not allow modifications, redistribution or access to the source code without the creator’s permission.
Why should you contribute to Open-source?
The ‘what if?’ question always arises in our mind before we start contributing to open source. Here are a few points to summarize it for you :
- It helps gain a deeper understanding of the software you are working on and helps improve your skills
- Gives you a real life experience on working on projects with feedbacks from accomplished programmers
- It gives you recognition in the community. You can leverage this to land yourself a good internship or job.
- It gives you the satisfaction of being a part of something bigger and gaining the respect of your peers.
How to contribute to Open-source
- First and foremost, you must choose a programming language of your choice. Once you are done with selecting a programming language, search for a project that is interesting to you.
- After you find a project you want to contribute to, get to know Git and GitHub. On GitHub, you can contribute to projects by submitting issues and contributing code. Submitting issues means sending messages about errors in applications and suggesting ways to fix them. Contributing code involves sending pull requests with your corrections and improvements.
- Next, find issues and bugs with the project you selected earlier. A lot of open source projects label their issues to conveniently track them. A lot of projects use labels like beginner, easy, starter, good first bug, low hanging fruit, bitesize, trivial, easy fix, and new contributor. You can further narrow down your search based on the programming language you’re comfortable with, by adding language: name to your search query.
- Opening an issue
You should usually open an issue in the following situations:
- Report an error you can’t solve yourself
- Discuss a high-level topic or idea (for example, community, vision or policies)
- Propose a new feature or other project idea
Tips for communicating on issues:
- If you see an open issue that you want to tackle, comment on the issue to let people know you’re on it. That way, people are less likely to duplicate your work.
- If an issue was opened a while ago, it’s possible that it’s being addressed somewhere else, or has already been resolved, so comment to ask for confirmation before starting work.
- If you opened an issue, but figured out the answer later on your own, comment on the issue to let people know, then close the issue. Even documenting that outcome is a contribution to the project.
- Opening a Pull Request
Fork and clone the repo on your local machine and fix the bug. Once you push the changes to your fork ,you should usually open a pull request in the following situations:
- Submit trivial fixes (for example, a typo, a broken link or an obvious error)
- Start work on a contribution that was already asked for, or that you’ve already discussed, in an issue
- A pull request doesn’t have to represent finished work. It’s usually better to open a pull request early on, so others can watch or give feedback on your progress. Just mark it as a “WIP” (Work in Progress) in the subject line. You can always add more commits later.
- If the project is on GitHub, here’s how to submit a pull request:
- Fork the repository and clone it locally. Connect your local to the original “upstream” repository by adding it as a remote. Pull in changes from “upstream” often so that you stay up to date so that when you submit your pull request, merge conflicts will be less likely.
- Create a branch for your edits.
- Reference any relevant issues or supporting documentation in your PR (for example, “Closes #37.”)
- Include screenshots of the before and after if your changes include differences in a UI/UX. Drag and drop the images into the body of your pull request.
- Test your changes! Run your changes against any existing tests if they exist and create new ones when needed. Whether tests exist or not, make sure your changes don’t break the existing project.
- Contribute in the style of the project to the best of your abilities. This may mean using indents, semi-colons or comments differently than you would in your own repository, but makes it easier for the maintainer to merge, others to understand and maintain in the future.
Open Source Programs and Rewards
Contributing to Open Source isn't just doing free work. Here are some of the programs which reward your contributions.
- GSoC: Google Summer of Code is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3 month programming project during their break from school. For more info visit their official site here
- RGSoC: Rails Girls Summer of Code is a global fellowship program for women and non-binary coders. Students receive a three-month scholarship to work on existing Open Source projects and expand their skill set. For more info visit the official site here
- HacktoberFest: Held every October, HacktoberFest rewards contributors who submit 4 valid pull requests or more on any repo on GitHub with swags. For more info visit the official HacktoberFest site here
There are loads of other programs that reward open source contributors out there. Thankfully someone has already listed them out :) Find out about all of them here
About Open-source Licenses
Open source licenses are licenses that comply with the Open Source Definition — in brief, they allow software to be freely used, modified, and shared. To be approved by the Open Source Initiative (also known as the OSI), a license must go through the Open Source Initiative's license review process.
The following OSI-approved licenses are popular, widely used, or have strong communities:
- Apache License 2.0
- BSD 3-Clause "New" or "Revised" license
- BSD 2-Clause "Simplified" or "FreeBSD" license
- GNU General Public License (GPL)
- GNU Library or "Lesser" General Public License (LGPL)
- MIT license
- Mozilla Public License 2.0
- Common Development and Distribution License
- Eclipse Public License version 2.0
What does the community gain from open-source contributions
Contributions to open-source benefit both the tech community and the general public greatly.
The people in tech that contribute to open-source create software that can be used for free elsewhere. Also people other than the original creators can contribute to the project or create their own forks(versions) of it. Open-source also emphasises on innovation, security and high quality software. This is not always possible in tech corporations as their main goal is to increase profits. Open-source software is especially useful to startup companies as costs for software licensing are avoided. The exchange of knowledge,code and ideas between different people helps tackle large problems and create novel solutions which is of benefit to the tech community.
As a consumer, you have the choice of using free software that would otherwise be expensive or restricted but is made free and distributable by the efforts of a few driven individuals.