A walk through Open Source addressing key points on Open Source, Closed Source, Open Source licenses, how to Contribute to Open Source and Why contributing to open source is important.
Let’s take a tour on Open Source
What is Open Source though?
Open source refers to source code that is publicly
accessible and allows anyone to inspect, modify,
redistribute or learn from it. Open source projects
encourage collaboration and the freedom to use the
software for any purpose you wish.
A brief History of Open Source
RICHARD STALLMAN DONALD KNUTH ERIC RAYMOND
Meet the Founding Fathers of the technology we celebrate today
Creator of the TeX computer
Free software movement
activist and programmer
Software Developer, open-source
software advocate, and author of
the 1997 essay and 1999 book
The Cathedral and the Bazaar
Why Open Source?
As in users having the freedom to run, copy, distribute, study, change and improve the
software. Free Software” is a matter of liberty, not price. To understand the concept, you
should think of “free” as in “free speech, not “free beer”. We sometimes call it “libre
software,” borrowing the French or Spanish word for “free” as in freedom, to show we do
not mean the software is gratis. Don’t mix things up!
The four essential freedoms
A program is free software if the program's users have the four essential freedoms:
● The freedom to run the program as you wish, for any purpose (freedom 0).
● The freedom to study how the program works, and change it so it does your computing as
you wish (freedom 1). Access to the source code is a precondition for this.
● The freedom to redistribute copies so you can help others (freedom 2).
● The freedom to distribute copies of your modified versions to others (freedom 3). By doing
this you can give the whole community a chance to benefit from your changes. Access to
the source code is a precondition for this.
Anything coming short of this 4 freedoms is nonfree!!
➔ Better Softwares and Speed
It is quite uncommon not to find thousands of people working on a
proven open source project, with many eyeballs viewing and working
through the code serious issues could be found and fixed very quickly,
Smaller issues too could be fixed without delay, because there are
always people willing to spend few hours to resolve that issue.
Why Open Source?
Isn’t Open Source Beautiful as Mona lisa painted by Da Vinci?
“90% say Open Source improves efficiency,
interoperability and innovation
Majority of Open Source Softwares are freely distributed, making it
cost effective, Open Source Softwares could be modified and
redistributed by a developer familiar with the source code. This
grants freedom from “vendor lock-in” where they must reply on a
single vendor for updates on their product.
Why Open Source?
➔ Abundant Support
Everybody hate Chris, but who doesn’t love tomato sauce?
You would always find better support when it is open source, Open source
software has nearly guaranteed survival. Although nothing is 100% certain, if
an open source application is freely available online and has a community
supporting it and working on it, it should be available in perpetuity. Older
versions will likely still be available too, for those who can't upgrade to newer
hardware just to run the latest version of an application.
Open Source Software organizations and developers are advocate for
Community participation, collaboration and volunteerism. They believe in
working to build free, high quality products that are available for-profit and
nonprofit organizations alike.
Why Open Source?
➔ Flexible and Cheaper Licensing with Open
The license shall not restrict any party from selling or giving away the software
The program must include source code and must allow distribution of source code,
as well as a compiled form
The license must explicitly permit the distribution of software built from modified
source code (it may require derived works to carry a different name or version
The license must be technology-neutral
The license must not restrict other software
The license must not be specific to a product
No discrimination against fields of endeavor
No discrimination against persons or groups
The license must allow modifications and derived works
The rights apply to all to whom the program is redistributed without an additional
license by those parties
Why Open Source?
A few examples of Open Source Softwares you might have
Ubuntu Mozilla Firefox
Closed Source AKA Proprietary Software
Closed source software is software that holds
the source code safe and encrypted. Meaning,
the user can't view, modify, or redistribute parts
of the code without some type of consequence.
It can go from voiding the warranty to even legal
Open Source Software VS Commercial Software
A few examples of Closed Source softwares you use
Open source is not just for programmers, you could contribute to
open source through the following ways.
1. Report Issues
2. Test the Code
3. Translate the user interface and documentation
4. Provide Documentation
5. Help design logos, user interface, websites
6. Promote and advocate for the Project
7. Thank the Community
Open Source Licensing
Open source licenses are legal and binding contracts between the
author and the user of a software component, declaring that the
software can be used in commercial applications under specified
conditions. The license is what turns code into an open source
1. GNU General Public License (GPL)
2. The Apache License
3. MIT license
4. Berkeley Software Distribution (BSD)
GNU General Public License
The GNU General Public License (GNU GPL or GPL) is a
series of widely used free software licenses that guarantee end
users the freedom to run, study, share, and modify the software.
The licenses were originally written by Richard Stallman, former
head of the Free Software Foundation (FSF), for the GNU
Project, and grant the recipients of a computer program the rights
of the Free Software Definition.
The Apache License
The Apache License is a permissive free software license written by the Apache Software
Foundation. It allows users to use the software for any purpose, to distribute it, to modify
it, and to distribute modified versions of the software under the terms of the license,
without concern for royalties
Following are some of the core specifications of the Apache License 2.0:
● Software may be freely used, reproduced, modified, distributed or sold.
● Software can be combined with other products and distributed or sold as packages.
● Products derived or modified from licensed software can be distributed under other licenses.
● Apache software cannot be redistributed without attribution.
● A copy of the license must be redistributed along with any Apache software.
● External contributions to the software are released under the ASF terms unless explicitly
MIT License is a software license that was originally developed at the Massachusetts Institute
of Technology. It is similar to the BSD license, which was first used for the Berkeley Source
Distribution, a version of UNIX that was developed at the University of California at Berkeley
(UCB). The main difference is that BSD-style licenses sometimes contain a clause prohibiting
the use of the name of the copyright holder in promotions without permission.
Both the MIT and BSD licenses are considered to be more liberal than the GNU Public License
(GPL), which is by far the most frequently used free software license.
Berkeley Distribution Software
BSD licenses are a low restriction type of license for open source software that does not put
requirements on redistribution.
As a low restriction and requirement license type, Berkeley Source Distribution (BSD) licenses are used
for the distribution of many freeware, shareware and open source software. BSD licenses are much like
the license that accompanied the original BSD. The original BSD Unix license was first written in 1969.
There are 4 main clauses of the classic BSD license:
1. The BSD UNIX license states one may copy, modify and redistribute the code so long as
one retains a copy of the original copyright statement.
2. The copyright statements must include a clear statement of two restrictions for use of the
3. A disclaimer for limitations of liability that include not claiming authorship of the code where
the code was not written by the user and not suing the author of the program for
unexpected or undesirable functionality.
4. The stipulation that one doesn’t use the name of the software or its authors to advertise or
promote work derived from modification of the distributed code without prior written
A comparative of Popular Open Source Softwares
Github is a Git repository hosting service, and also
a code hosting platform for version control and
collaboration, Github has amazing features which
makes it stand out, it simplifies the process of
working with other people and makes it easy to
A repository is usually used to organize a single project. Repos can
contain folders and files, images, videos, spreadsheets, and data sets
– anything your project needs.
Branching is the way to work on different versions of a repository at one time.
By default your repository has one branch named main which is considered to be the definitive
branch. We use branches to experiment and make edits before committing them to main.
When you create a branch off the main branch, you’re making a copy, or snapshot, of main as it
was at that point in time. If someone else made changes to the main branch while you were
working on your branch, you could pull in those updates.
Have you ever saved different versions of a file? Something like:
Branches accomplish similar goals in GitHub repositories.
Here at GitHub, our developers, writers, and designers use branches for keeping bug fixes and feature work
separate from our main (production) branch. When a change is ready, they merge their branch into main.
Make and commit changes
On GitHub, saved changes are called commits. Each commit has an associated
commit message, which is a description explaining why a particular change was
made. Commit messages capture the history of your changes, so other
contributors can understand what you’ve done and why.
When you open a pull request, you’re proposing your changes and requesting
that someone review and pull in your contribution and merge them into their
branch. Pull requests show diffs, or differences, of the content from both
branches. The changes, additions, and subtractions are shown in green and
A fork is a copy of a repository. Forking a repository allows you to freely
experiment with changes without affecting the original project. Most
commonly, forks are used to either propose changes to someone else's
project or to use someone else's project as a starting point for your own idea.
Helps you gain profound knowledge of the software.
Your first open source contribution may not be as easy as you might expect upfront, as it may involve one or more of the following
1. determining which part of your solution is worth contributing
2. studying the contribution guidelines of the target project
3. obtaining and building the project
4. extracting the relevant code fragments
5. adapting the code and integrating the desired changes
6. providing the required level of automated test cases and documentation
7. filing an issue
8. submitting the change
Once you’ve gone through these steps, you will have gained a much deeper level of knowledge and understanding about the
project at hand.
Helps your reputation and builds you career
Platforms like Github, provide an easy way to both show to potential employers what your
interests and skills are and for them to verify, if the expertise meets their requirements.
Some recruiters use GitHub to study a candidate’s interests and skills after they’ve identified a
possible match. Others use it to seek out tech pros with very specific skills, or who’ve shown an
interest in projects that are similar to their company’s work.
Hence, active open source contributions emphasize your expertise and knowledge, more than
certificates alone will ever do. This is beneficial for advancing your career, be it at your
current or an interesting, future employer.
A look at Michael Okoh Profile on Github
Contributing to open source projects is fun
Contributing to open source projects can be a lot of fun, though
challenging at first. It gives a sense of personal satisfaction and
bragging rights. While in your own projects you may be in the
position to act quickly, when it comes to design or architectural
decisions, there may be a lot more discussions in open source
projects. When contributing to such projects, you are getting in
touch with strong decision makers and very talented developers.