class: center, middle, tinted ## An Introduction to Open Source Software .author[ Stewart Weiss
] .license[ Copyright 2021 Stewart Weiss. Unless noted otherwise all content in these slides is released under a
[Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by/4.0/). ] --- name: cc-notice template: default layout: true .bottom-left[© Stewart Weiss. CC-BY-SA.] --- name: tinted-slide template: cc-notice layout: true class: tinted --- ## A Story An attorney with a degree in engineering, Karen Sandler has a hereditary condition called _hypertrophic cardiac myopathy_. This makes her heart act irregularly and can be fatal. -- She had an implanted _cardioverter defibrillator_, which gets activated if she needs to be shocked out of an arrhythmia. -- When she was pregnant it mistakenly shocked her twice, almost killing her. Pregnancy can bring on heart rhythm changes that the device thinks is a dangerous arrhythmia. -- She wanted to be able to explore the code running her device for programming bugs and security vulnerabilities, but she couldn't. She was not allowed to see it .redbold[_because it was not open source software_.] "I have no power to do anything about it,” she said. Accessing the code or encrypted data in the device would infringe upon the manufacturer’s rights under the Digital Millennium Copyright Act. When software is closed or proprietary, we cannot see how it works, whether it controls cars, airplanes, voting machines, or respirators. --- ## What Did She Do? .left-column[ Karen started the [__Software Freedom Conservancy__](https://sfconservancy.org/), a not-for-profit charity that helps promote, improve, develop, and defend Free, Libre, and Open Source Software (FLOSS) projects. ] .right-column[
] .footnote[ Photo by Ranjithsiji - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=65121527 ] -- .below-column[ ## What Can You Do? Learn something about open source software. ] --- ## What is Open Source Software? -- - Software whose code you can see? -- .redbold[No.] - .redbold[__It Is Not Just the Code__.] -- - Open source software is more than just software whose code is available. -- - It is inseparable from the community of people who contribute to it, who use it, and who actively work to support it in a myriad number of ways. -- - It is inseparable from the philosophy of sharing and freedom that spawned the __Free and Open Source Software__ (a.k.a. __FOSS__) movement. -- - Open source is - an idea, - a philosophy that software should be __Free__, __Free__ as in __Freedom__, not as in __free candy__. - a method of building software that involves people working together towards a common, shared goal, within a social structure of their own making, created with the hope that it ensures the project's success. --- ## If You Don't Pay for It, Is It Open Source? - No. -- - There is lots of "free" software that is not open: -- - Google Chrome - Adobe Reader - Apple Safari - Windows Internet Explorer -- - So what is open source then? --- ## Open Source Software is Everywhere - Free and open source software is all around us, more than you probably realize. Some examples: - The code that secures Internet transactions, __OpenSSL__ -- - The __Inkscape__ graphics application .center[
] --- ## Open Source Software is Everywhere - Free and open source software is all around us, more than you probably realize. Some examples: -- - The __Eclipse__ IDE -- - __Audacity__, music editing software .center[
] --- ## Open Source Software is Everywhere - Free and open source software is all around us, more than you probably realize. Some examples: - The __Python__ programming language -- - The __Android__ operating system in many smartphones -- - The __Firefox__ browser .center[
] --- ## Open Source Software is Everywhere - Free and open source software is all around us, more than you probably realize. Some examples: - The __Chromium__ core of browsers -- - The __Linux__ kernel and operating system -- - The code that many web developers use to build web pages, such as __Wordpress__ and __Drupal__ -- - Name some others that you use. - Look at [The Octoverse 2020](https://octoverse.github.com/), a report produced by _GitHub_, to see just how much activity happened in 2020 surrounding free and open source software. --- ## There's No Money In Open Source, Right? - WRONG!! -- .left-column[ Companies such as __RedHat__ make money. How much? - Total assets in 2021: $3.5 billion - Total revenue in 2020: $1.8 billion ] .right-column[
] -- .below-column[ They are just one of many. ] --- ## Openness In General - The free and open source software movement paved the way for a more general _philosophy of open access_, sometimes dubbed the __Open Source Way__ (see [The open source way](https://opensource.com/open-source-way)) or simply __Openness__. - Open encyclopedias such as [Wikipedia](https://wikipedia.org) - Open digital libraries such as [Internet Archive](https://archive.org) - Open maps such as [OpenStreetMap](https://www.openstreetmap.org) - Open data in general. There are thousands of open data sets. Government ones include: - municipalities like New York City: [NYC Open Data](https://opendata.cityofnewyork.us) - states, like New York State: [New York State Open Data](https://data.ny.gov/) - the federal government: [United States Open Government](https://www.data.gov/open-gov/) and many, many more. --- ## Free Software's Origins - During the 1970's software became a commodity: companies started selling it for profit. Before that no one bought software - it was given away when you got the hardware. - Code became proprietary and closed. - The era of personal computers (PCs) arrived. Almost all are shipped with proprietary, closed code. - In 1983, Richard M. Stallman (RMS), who worked in the Artificial Intelligence Lab at MIT, got fed up with not having access to the source code for the software of a newly installed laser printer. - Stallman set out on a mission to found a movement that would have profound effects on the world of computers. He wrote on _Usenet_ [1] > _Starting this Thanksgiving I am going to write a complete Unix-compatible > software system called GNU (for Gnu's Not Unix), and give it away > free to everyone who can use it._" .footnote[ 1 _Producing Open Source Software_ by Karl Fogel ] --- ## GNU and the Free Software Foundation - In 1985, RMS wrote the [GNU Manifesto](https://www.gnu.org/gnu/manifesto.html) and founded the __Free Software Foundation__ (__FSF__) to support the free software projects. - He defined the __Four Freedoms__ as the core tenets of the Free Software Movement (purposely starting with number zero)
.centered_80[.zero_list[ 1. _The freedom to run the software however you wish and for whatever reason you wish._ 1. _The freedom to study the software source code and make whatever changes you wish._ 1. _The freedom to copy and distribute the software (modified or not) however you wish._ 1. _The freedom to make improvements to the software and then share the improved version however you wish._ ]] --- ## The Open Source Definition - The __Open Software Initiative__ (__OSI__) created a definition of open source software that was more detailed than Stallman's Free Software Definition, and called it the __Open Source Definition__ (__OSD__). - The OSD can be found on the OSI website: [https://opensource.org/osd](https://opensource.org/osd) - __The OSD defines valid software licenses__. - __The software license is what determines whether software is open source!__ -- If you put an OSI license on software you create, you give people the rights specified in the license. -- You still own it. -- You still have a copyright on it. -- You just let people know they can contribute, copy it, redistribute it, or whatever. --- ## Copyright in a Nutshell - Roughly, __copyright__ is the legal right granted to the creator of a creative work to the exclusive publication, production, sale, or distribution of that work. - Usually the creator does not have to do anything to own that copyright. (This varies from one country to another.) -- - By default, the creator has _All Rights Reserved_, meaning no one has the right to do anything with the work except to use it as is allowed (e.g., listen to it, read it, view it, run it, and so on..super[1]) - When all rights are reserved by the copyright owner, others cannot copy, reuse, redistribute, or do anything other than use the work. - The copyright owner __controls__ what can be done. .footnote[ 1 There is an international _fair use_ doctrine that specifies what are allowed uses for different kinds of works. ] --- ## Licenses in a Nutshell - If you want to give others the _permission_ to do certain things with your work, you do that by issuing a __license__. - A __license__ is a legal document that gives people permission to do specific things with the copyrighted work. - There are many different FOSS licenses. It is a daunting number. - OSI has a list of licenses that are OSI-approved. See [https://opensource.org/licenses](https://opensource.org/licenses/). - You can read about licenses and how to choose them here: [https://itsfoss.com/open-source-licenses-explained/](https://itsfoss.com/open-source-licenses-explained/) --- ## Community and Software Licenses - When a software work has been written by many people, each person retains copyright over the portions that they contributed to the whole work. - It would be hard for decisions to be made about what can be done with that software if each copyright owner had a different set of rights. - Putting a project under a free and open source software license can simplify who can do what. - For example, most FOSS licenses require contributions to a project to be contributed and released under the same license as the original work. -- - If you contribute to a project with an OSI approved license, you still keep the copyright over your work, but your contribution is covered by the same license as the project and is open source. -- - This means your code is shareable, not secret. -- - It can be part of your portfolio. -- - You can show it to a prospective employer. --- ## FOSS versus Not FOSS - If you write code for an employer, whether as employee, intern, or even sometimes as an independent contractor, it is __work for hire__, unless you have a contract that states otherwise. - Work for hire is any created work that can be copyrighted like songs, stories, essays, sculptures, paintings, graphic designs, or computer programs. -- - Beware: - You do not own the copyright. - You cannot share your code with anyone or put it in your portfolio. - You cannot show it to a prospective employer. --- ## In Short, FOSS Benefits Your Skillset - Communication - how to ask questions - distributed and asynchronous nature of a free and open source project - Collaboration - division of labor - risk management - Tools - version control - issue tracking - asynchronous discussion methods - mailing lists, irc, chat - Best Practices - Many of the current industry best practices either originated in FOSS or were perfected by it. Version control, feature branches, unit and integration tests, continuous integration and deployment (CI/CD). --- ## FOSS Benefits to Your Career - Public Portfolio - Portfolio as Resume? your resume will show your potential employer what you’ve done, your portfolio reveals how you did it. --- ## Humanitarian Free and Open Source Software - [Humanitarian Free and Open Source Software](http://www.timreview.ca/article/399) by Chamindra de Silva, Dec. 2010 defines humanitarian free and open source software as follows: - __Humanitarian free and open source software (HFOSS)__ represents the application of free and open source software (FOSS) to the coordination problems faced in the humanitarian and disaster-response domains. But it is also software related to: - Human rights - Advocacy - Development Cooperation - Assistive/Accessible Technologies --- class: center, middle ## Examples of HFOSS Projects --- ## [Centre For Humanitarian Data](https://centre.humdata.org/) .left-column2-small[ .small[ ]] .right-column2-large[
] .below-column2[ _The Centre for Humanitarian Data is focused on increasing the use and impact of data in the humanitarian sector. It is managed by the United Nations Office for the Coordination of Humanitarian Affairs (OCHA). The Centre’s services are available to humanitarian partners and OCHA staff in the field and at Headquarters free of charge_ [more](https://centre.humdata.org/what-we-do/) ] --- ## [Humanitarian Data Exchange](https://data.humdata.org/) .left-column2-large[
] .right-column2-small[ .small[ ]] .below-column2[ _The Humanitarian Data Exchange (HDX) is an open platform for sharing data across crises and organisations. Launched in July 2014, the goal of HDX is to make humanitarian data easy to find and use for analysis. Our growing collection of datasets has been accessed by users in over 200 countries and territories. Watch this video to learn more_ [more](https://data.humdata.org/faq) ] --- ## [Humanitarian OpenStreetMap Team](https://www.hotosm.org/) (HOT) _HOT is an international team dedicated to humanitarian action and community development through open mapping. They work together to provide map data which revolutionizes disaster management, reduces risks, and contributes to achievement of the Sustainable Development Goals_ [more](https://www.hotosm.org/what-we-do)
Their repositories are on [GitHub](https://github.com/hotosm). --- ## [Ushahidi](https://www.ushahidi.com/) (= "testimony" in Swahili) - Crowdmapping/Crisis-mapping application - Started in 2008 in Kenya to provide the public with real-time information about national elections - Now has thousands of deployments worldwide
--- ## [OpenMRS](https://openmrs.org/) - The mission of OpenMRS is to improve health care delivery in resource-constrained environments by coordinating a global community that creates a robust, scalable, user-driven, open source medical record system platform.
--- ## Sources 1. VM Brasseur, _Forge Your Future with Open Source_, The Pragmatic Programmers, LLC. 2018. 1. Karl Fogel, _Producing Open Source Software: How to Run a Successful Free Software Project_, O'Reilly Media, 2009. 1. https://www.gnu.org/philosophy/free-sw.html 1. https://blog.lizardwrangler.com/2008/01/22/january-22-1998-the-beginning-of-mozilla 1. https://opensource.org/licenses