What is Open Source
Tags: beginners, opensource, community, programming
Published: 2022-07-11 18:12:06



## Introduction

Hi there! So I’m here to talk about Open Source software as I believe it is a significant pillar in the affairs of the software industry of our time. I’ll define software as any set of instructions, data, or programs which is used to operate computers. This software executes tasks based on the instructions defined within. Our world of today has grown dependent on information technology which rides on the software created by developers and engineers.


## What is Open Source Software

I'd like to briefly introduce and describe the topic, Open-source(OS) or open-source software(OSS). OSS is any software application or solution whose source code is made available to users and developers to read, enhance, improve, modify and consume in any form as long as the guidelines in the license are followed. With OSS, developers can use this non-proprietary software provided by other developers and organizations and collaborate to build or enhance the project or software. OSS is often distributed through online repositories like GitHub, Gitlab, etc.

Although some guidelines for the project should be included in the `README.md` file, the license contains predefined legal binding software guidelines for overseeing its usage. They are the `terms & conditions ` that are referenced as regards the software usage and distribution. Below are a few of the licenses available for open source software;

- Apache License 2.0
- GNU General Public License v3.0
- MIT License
- BSD 3-Clause "New" or "Revised" License
- Creative Commons Zero v1.0 Universal
- GNU General Public License v2.0
- Mozilla Public License 2.0
- The Unlicense

The `GNU General Public License ` was released by Richard Stallman, a programmer at MIT who believed that software should be made available to developers for use of any kind. He started to release free code under this license. This brought about a series of movements and events that advocated for free software. One of these notable events is the Freeware Summit organized by Tom O'Reilly, in which leaders of open source projects of the time were present. On that day, the term `Open Source` was decided by vote to be the name that represents any free and publicly available sourceware.


## Terms in Open Source

- `README.md`: This is a file that serves as the introduction manual or the simplified form of documentation for a software source code. It highlights the fundamental usage of the software and includes additional project-specific information.
- `Pull Request`: A pull request let you tell others about changes you've pushed to a branch in an online code repository. Once a pull request is created by a contributor, it initiates the process of merging new code changes with the main project repository
- `Codebase`: In software development, a codebase is a collection of source code used to build a particular software system, application, or software component.
- `DVSC`: In software development, distributed version control is a form of version control in which the complete codebase, including its full history, is mirrored on every developer's computer.


## Open Source Initiative (OSI)

The Open Source Initiative (OSI) was started to promote the use of open-source software in the commercial world. This is done by providing a set of rules or guidelines for releasing an open-source software called the Open Source Definition (OSD). They also offer the OSI Certified Open Source Software Certification Mark and Program which certifies software that is distributed under a license that guarantees the right to read, redistribute, modify, and use the software freely. The guidelines laid down by the OSD include;

- Free redistribution of the software
- The integrity of the author's source code
- No discrimination against persons or groups
- The license must not be specific to a product
- The license must not restrict other software
- The license must be technology-neutral


## Relevance of OSS

Over the past 50 years, a lot of events have happened that contributed to the advancement and general adoption of the open-source idea. Some of these happenings are;

- The creation of GNU: This was an open-source clone of the Unix operating system. GNU stands for `GNU’s Not Unix`.
- The writing of the General Public License (GPL)
- The advent of Linux & RedHat
- The Open-source Apache web server and Mozilla Firefox


As mentioned earlier, today's software world rides, to a major extent, on open-source software. Looking at our world today, we can see that several software applications and programs we interact with as users and developers are open-source software. This stands to prove that OSS is a major force in the software industry of today. Some of them include; Mozilla Firefox, Linux, VLC Media player, Blender, Python, etc. This results in the need to maintain and secure these projects bringing about a cost implication. This cost implication is often handled by the community and volunteers around this project.


## How to make money in open source

There is the general misconception that open source software means free software. The ‘free’ here means free of restrictions with the source code. Software however can be commercial and still be open source simply because it is required to release its source code based on some particular license. Open-source programmers who decide to make their software free can still make money via various means which include;
    
- Paid training and support
- Custom feature development
- Troubleshooting and Installing
- Offering technical support
- Setting up cloud services for the projects
- Licensing open source software


## How to contribute to open source

Contributing to an open-source project is a great way for beginners to learn more about software generally and about a particular project. Here, you can pick up coding conventions that have been implemented in the project. It’s also an avenue to network and meet other developers and put yourself in sight of employers. To get started as a beginner, you can simply make a comment on the code, report a bug, or even help in documenting the codebase.

Before contributing to OSS however, some things have to be considered to help decide on the project to work on. Some of these factors include;

- Programming language: To contribute to the source code of software you need to be familiar with the language(s) used for the project.
- Project size: For beginners, a large codebase might seem overwhelming and it might be difficult to find a starting point. You would want to start with something relatively small and move from there.

The following simple steps you can take to start contributing to open source
- Learn the basics of Github and Git
- Decide on the open-source project to contribute to
- Join communities
- Start contributing: You can start by finding solutions to already raised issues or looking for bugs in the project. You can also help others understand the code better by documenting the project.


## Advantages of open source software

- With open-source software, checks and improvements are implemented faster by peer programming because it allows collaboration and has an active community
- Open source allows users to keep track of the activities or changes on the code without interacting with the owner. This helps to improve transparency.
- Open-source software offers flexibility to programmers as they can modify the source code to alight with their business or personal needs.
- OSS is cost-effective because you mostly have to pay for technical support and maintenance without paying for the software itself.


## Closed source
Closed source software, which is also known as commercial or proprietary software, is any type of software that does not allow users or developers outside the internal development team access to its source code. With proprietary software, access is not given to its source code because it is the intellectual property of a person or group of people. As a result, users often pay to make use of this software.


## Differences between open source and closed source software
 
| S/N | Open Source        | Closed Source          |
| :-- |:------------------:| ----------------------:|
| 1.  | This code can be modified by other users | The only individual or organization who has created the software can only modify the code |
| 2.  | Programmers freely provide improvement for recognition if their improvement is accepted | Programmers are hired to improve the software |
| 3.  | There are not so many restrictions on users based on usability and modification of software | there are so many restrictions on users based on usability and modification of software |



## How can I learn more

The best way to learn about open source is to start participating actively in open source. [Github](https://github.com) is a wonderful place to get started with open source as it is one of the largest online repositories for open-source software. You can also check out [opensource.com](https://opensource.com/) for a more in-depth breakdown of the topic `Open Source`. Communities are also a great way of learning about open source as you get to interact with other developers and consumers. [Here](https://discord.gg/opensource) is a link to our open-source community on discord where you can connect with other devs in the open source space.

Cheers!