Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Demystifying Open Source

Umegbewe
August 15, 2020

Demystifying Open Source

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.

Umegbewe

August 15, 2020
Tweet

More Decks by Umegbewe

Other Decks in Technology

Transcript

  1. Demystifying Open
    Source
    Let’s take a tour on Open Source

    View Slide

  2. 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.

    View Slide

  3. 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
    typesetting system
    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

    View Slide

  4. Why Open Source?
    ➔ Freedom
    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!!

    View Slide

  5. ➔ 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

    View Slide

  6. ➔ Cost
    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?

    View Slide

  7. ➔ 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?

    View Slide

  8. ➔ Flexible and Cheaper Licensing with Open
    Source

    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
    number)

    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?

    View Slide

  9. View Slide

  10. View Slide

  11. A few examples of Open Source Softwares you might have
    come across
    Ubuntu Mozilla Firefox
    Python
    TheorilyCollective @nwebedu_junior

    View Slide

  12. 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
    repercussions.

    View Slide

  13. View Slide

  14. Open Source Software VS Commercial Software
    TheorilyCollective
    @nwebedu_junior

    View Slide

  15. A few examples of Closed Source softwares you use
    everyday

    View Slide

  16. 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

    View Slide

  17. 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
    component.
    1. GNU General Public License (GPL)
    2. The Apache License
    3. MIT license
    4. Berkeley Software Distribution (BSD)

    View Slide

  18. 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.
    Versions
    1. GPLv3
    2. GPLv2
    3. GPLv1

    View Slide

  19. 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
    specified otherwise.

    View Slide

  20. MIT License
    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.

    View Slide

  21. 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
    distributed software.
    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
    consent.

    View Slide

  22. A comparative of Popular Open Source Softwares

    View Slide

  23. Github
    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
    collaboration.

    View Slide

  24. Repositories
    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.

    View Slide

  25. Branch
    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:
    ● story.txt
    ● story-joe-edit.txt
    ● story-joe-edit-reviewed.txt
    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.

    View Slide

  26. 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.

    View Slide

  27. Github Essentials
    Pull Requests
    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
    red.
    Fork
    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.

    View Slide

  28. 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
    steps:
    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.

    View Slide

  29. 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.

    View Slide

  30. A look at Michael Okoh Profile on Github

    View Slide

  31. 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.

    View Slide