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. 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.
  2. 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
  3. 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!!
  4. ➔ 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 ”
  5. ➔ 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?
  6. ➔ 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?
  7. ➔ 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?
  8. A few examples of Open Source Softwares you might have

    come across Ubuntu Mozilla Firefox Python TheorilyCollective @nwebedu_junior
  9. 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.
  10. 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
  11. 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)
  12. 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
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. 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.
  23. 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.