What is Open Source Software: a 5 minute guide

The Educative Team
Dev Learning Daily
Published in
9 min readAug 6, 2020

--

This article was written by Saeed Ahmad and Amanda Fawcett as part Educative’s dedication to accessible software and democratized tech education.

Open source software is a class of computer software whose source code is released under a license that allows users to use, change, redistribute, and contribute for free. Normally, Open source software is developed collaboratively, so anyone who wants to contribute can do so by making a submission or by suggesting changes.

Open source software is an important part of the tech world. If you’re new to computer programming or want to get started as an open source contributor, you’re in the right place. Today, we will walk you through an introductory guide to open source and show you how to get involved.

We will discuss:

  • What is open source software?
  • Why is open source important?
  • Why should you contribute?
  • Key terms to know
  • How do you get started?

What is open source software?

The term “open source” was introduced by The Open Source Initiative in the 1990s. Open source software refers to public source code that users can access or modify for free by making peer-reviewed suggestions or fixes.

Open source software, like frameworks and libraries, can also be reused in other programs, and most programming languages are open source. This is in direct contrast to privatized or closed source software, where the source code is owned and operated exclusively by an organization.

The authors of proprietary software decide if a program is open source or not. In the case of closed source, a user must be permitted with proprietary license rights to alter the source code. Adobe Photoshop or the Google Cloud, for example, do not offer permission for external developers to use or alter that code.

Open source, on the other hand, makes source code available to the public, and it can be altered once a user accepts the terms of a license.

It’s important to note that there is a difference between open source software and free source software. Open source software puts far more emphasis on security and licensing. Free source software qualifies as open source, but open source software is not necessary free. Some programmers do charge money for software or software support (e.g. installing, troubleshooting).

Pro tip: Are you unsure if something is open source? You can easily check its API at api.opensource.org

Popular open source software licenses and technologies

  • GNU General Public License: any source code written under this license must be released as open source.
  • Apache License 2.0: If you issue an Apache license, you can run, modify, and share software code for free as long as it follows the Apache licensing rules.
  • MIT license: There are no restrictions to the MIT license, and it can be re-licensed under other licenses.
  • Swift programming language: Apple created this replacement to Objective C and released it as an open source technology.
  • Kubernetes: This devops technology popularized the use of container orchestration using open source principles.
  • Flutter: Google’s open source solution to building native UIs has made it easier for developers everywhere to make amazing applications.
  • TensorFlow: This end-to-end open source platform is now an essential part of the machine learning toolkit. It was the work of the community that made this software useful.
  • Linux: This open source platform is what gave us global web searching and access to OS technologies.
  • Android: This operating system is popular due to its open source nature, opening up access to Google services.

Why is open source important?

Open source software is very important to the history of software development. We would not be where we are today without open source software. In fact, the term was coined specifically for software development. Open source is a set of values that celebrate open exchange and participation.

These licenses democratize the world of programming. Open source software sets the precedent that profit and gain are not the main goals of programming: world-wide collaboration and problem solving are.

Some argue that the Internet would look very different today without open source software. The early developers of the Internet used open source software (Linux and Apache Web Server), so the values of shared information were built into the foundations.

This changes our relationship to technology by favoring human connection and collaboration. Every time you check your email, play a multiplayer video game, or learn a new programming language, you benefit from the values of open source.

Open source plays an active role in solving human problems and improving the world, by believing that this can only happen when we all have access to the solution. The underlying code of our world should be in the hands of anyone who wishes to improve it.

Why should you contribute to open source?

Okay, so we know what open source is, and we know why it’s important. As a developer reading this article, you may now be wondering “but why should I contribute?” Let’s take a look at some of the important reasons:

Gain real-world experience

If you are a novice programmer and want to get hands-on experience with the software development lifecycle, you can do it by contributing to the open source projects. These projects are maintained in the similar way (or sometimes even better) than closed source projects because there are so many people actively contributing. You’ll learn everything about Git flow, Issue tracking, Code reviews, and the Software Development Life Cycle (SDLC).

Earn recognition

Working with open source helps you portray yourself as an expert in your field, even without professional experience. Many developer include open source contributions on their resumes. There are even many organizations that will pay you. Tech companies are more interested in hiring people who are comfortable with their codebase and workflow, so you can stand out as a candidate by contributing to their projects.

Technical upskilling

Working with open source makes you more technically sound and experienced. When you are developing something, you normally only think of a limited pool of users, but if you are developing open source software, you know that it’s going to be used by thousands of people. This means that you are more attuned to detail. Also, there’s a peer-to-peer review process to weed out bad practices, which will help you become a better programmer.

Give back to the community

You benefit from open source whether you know it or not. By contributing, you can give back what you have learned to the community. Developers who contribute to open source are the reason we have the kinds of technologies we have today. Usually, open source groups have local communities that organize events, so you even get a chance to network with local tech circles.

Key open source terms to know

There are some common terms used in the open source world that you need to be successful. Let’s take a look to get up to speed.

  • Maintainers: these are the engineers that build and manage open source projects
  • Repository: where the codebase is stored. This is where you’ll find the history and progress of a given project stored in files
  • Issue: an enhancement or fixed error in the source code. Contributors work on resolving issues.
  • Fork: creates a copy of a repository under your username. This is used to make changes in code when you are working on an issue.
  • Commit: the saved version of code that is organized by commit messages. This is how we track the changes made to code and know which version is most recent
  • Pull request (PR): a submission of your changes to a forked repository to the original. This is the preferred way to make contributions once they are peer reviewed and merged
  • Merge: imports suggested PRs to the original open source repository. This is done by the maintainer
  • Git: a version control system where we can save versions of code. Think of this like a storage unit or bank
  • GitHub: a most popular site for hosting Git repositories

How do you get started?

Step 1: Gather your ideas and skills

Before getting started, ask yourself what project you want to work on. Start with the programming languages you know well. What frameworks do you like best? What problems have you encountered while using them?

Once you specify the language you want to work on, you should narrow down a project. GitHub organizes projects into Showcases, where you can browse for a topic. From there, analyze the volume of that project. If you’re new, it’s not a great idea to jump into large software projects. Some projects are even labeled “first-timers-only” or “easy”.

Step 2: Familiarize yourself with GitHub and Git

GitHub is the most popular, widely used hosting platform for open source projects. If you don’t have one already, you’ll need to create an account. Read their guide to get familiar with the platform. You’ll also need to get familiar with Git. The basic skills you’ll need to learn are:

  • Cloning a repository
  • Sending pull requests (PRs)
  • Reviewing changes
  • Discussing changes
  • Assigning commits

Step 3: Join a community that suits you

Open source projects are welcoming to incomers. Once you find a project you like and learned the basics of GitHub/Git, join a community that suits you and start contributing. The easiest way to join is to subscribe to the mailing list for a project. These are usually listed on GitHub pages. You’ll then be accepted to the team and can start communicating with the members.

Step 4: Mentor others

Once you become a member and a seasoned contributor, it’s time to give back to others. The key to open source is collaboration, so being helpful and welcoming to newcomers is part of your responsibility as a contributor. Reply to questions, guide folks through projects, and share your knowledge freely.

Note: You can also create your own projects from scratch if you feel that existing projects don’t offer the solutions you want. You’ll need to create an initial project draft that answers a set of basic questions.

Another common way that people start their own projects is by developing open source alternatives to commercialized software. You don’t have to reinvent the wheel to be a valuable contributor.

Notable open source competitions:

Many developers get started with open source through online programming competitions. These coding competitions are usually organized by known tech companies, so you gain experience and recognition. Here are some of the notable competitions:

  • Hacktoberfest: Hacktoberfest is an online event organized by Digital Ocean during October of each year. You need to contribute to the Open Source projects with at least 4 merged PRs. If you are not clear about how to contribute to the actual codebase, you can also contribute to improving their docs.
  • Google Summer of Code: The Google Summer of Code (GSoC) is an international annual program in which Google awards stipends to students who successfully complete a free and open source software coding project during the summer.
  • IBM’s Call for Code: The Call for Code Global Challenge is a chance to work on solving challenges through code and software solutions. It’s also supported by Charitable Partner United Nations Human Rights. Together with The Linux Foundation, top solutions are open-sourced and deployed.
  • Microsoft Imagine Cup: Imagine Cup is an annual competition sponsored and hosted by Microsoft. It brings together student developers worldwide to help resolve some of the world’s toughest challenges.
  • Facebook Hacker Cup: Facebook Hacker Cup is an annual international competition, which started as a way yo identify top engineering talent for employment at Facebook.

Wrapping up

Open source offers a lot of opportunities. Whether you are a novice programmer or experienced software engineer, contributing to open source will help further your career and personal development.

Don’t be afraid to get started — open source is for everyone, even you!

--

--

Master in-demand coding skills with Educative’s hands-on courses & tutorials.