Introduction to Open Source Software Development Spring semester, 2017 School of Computer Science and Engineering, Pusan National University Joon-Seok Kim OPEN SOURCE SOFTWARE
Outline Open source software Definition Licenses Environments Linux How to use Linux Virtualization 2
What is Open Source Software Open Source Software (OSS) Software that can be freely accessed, used, changed, and shared (in modified or unmodified form) by anyone Made by many people, and distributed under licenses that comply with the Open Source Definition Only software licensed under an Open Source Initiative(OSI)-approved Open Source license should be labeled "Open Source" software. 3
Open Source Definition [1] Open source doesn't just mean access to the source code. The distribution terms of OSS must comply wit h the following criteria: Free Redistribution Source Code Derived Works Integrity of The Author's Source Code No Discrimination Against Persons or Groups No Discrimination Against Fields of Endeavor Distribution of License License Must Not Be Specific to a Product License Must Not Restrict Other Software License Must Be Technology-Neutral [1] https://opensource.org/osd 4
Examples of OSS 5
Software License Definition of license An authorization (by the licensor) to use the licensed material (by the licensee) Software license Grants the licensee permission to use one or more copies of software in ways Rights in Copyright Public Domain Non-Protective FOSS License Protective FOSS License Proprietary License Trade Secret All rights relinquished More rights granted More rights retained All rights retained 6
Software Licenses & Rights Software licenses and rights granted in context o f the copyright according to Mark Webbink, expa nded by freeware and sublicensing Rights granted Public domain Non-protective Protective Freeware/ Proprietary FOSS license FOSS license Shareware license Trade secret Copyright retained No Yes Yes Yes Yes Yes Right to perform Yes Yes Yes Yes Yes No Right to display Yes Yes Yes Yes Yes No Right to copy Yes Yes Yes Often No No Right to modify Yes Yes Yes No No No Right to distribute Yes Yes, under same Yes, under same license license Often No No Right to sublicense Yes Yes No No No No https://en.wikipedia.org/wiki/software_license 7
Popular Open Source Licenses Licenses [1] % MIT License 31% GNU General Public License (GPL) 2.0 18% Apache License 2.0 15% GNU General Public License (GPL) 3.0 8% BSD License 2.0 (3-clause, New or Revised) License 5% ISC License 5% Artistic License (Perl) 4% GNU Lesser General Public License (LGPL) 2.1 4% GNU Lesser General Public License (LGPL) 3.0 2% Eclipse Public License (EPL) 1% Microsoft Public License 1% Mozilla Public License (MPL) 1.1 < 1% GNU Affero General Public License v3 or later < 1% [1] https://www.blackducksoftware.com/top-open-source-licenses 8
License Compatibility [1] Permissive Weakly Protective Strongly Protective Public Domain MPL 1.1 MIT/X11 LGPLv2.1 GPLv2 BSD-new LGPLv2.1+ GPLv2+ Apache 2.0 LGPLv3 or LGPLv3+ GPLv3 or GPLv3+ Affero GPLv3 [1] https://www.dwheeler.com/essays/floss-license-slide.html 9
Example of Apache 2.0 License File Header /* * Copyright (C) 2010, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/license-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android;... 10
Environments in Deployment Environment A computer system in which a computer program or software component is deployed and executed Different environments Local Development Integration Test/QA Stage/Pre-production Production 11
Various Environments Software stack A set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications Example of open source software stack [1] [1] http://www.roguewave.com/products-services/open-source-support 12
Usage Share of OS Operating System (OS) Market Share for Des ktop, Server, and Mobile Phones http://catalog.flatworldknowledge.com/bookhub/ reader/12375?e=fwk-38086-ch09_s02 13
HitsLink (May 2014) IDC (2013 Year End) IDC Q4 (2013) Gartner (Feb. 2014) 14
Linux Linux (a.k.a. GNU/Linux) Unix-like computer OS Built with a collaborative development model Open source and created by volunteers and employees of companies, governments and organizations from all over the world 15
History of Unix-like OS 1970 1980 1990 2000 2010 BSD family FreeBSD NetBSD OpenBSD BSD (Berkeley Software Distribution) Bill Joy SunOS (Stanford) Darwin NextStep 3.3 MacOS X Xenix OS Microsoft/SCO GNU/Hurd K16 ios Research UNIX Bell Labs Ken Thompson, Dennis Richie System III & V family GNU Project Richard Stallman GNU/Linux Minix Linux Tovalds Andrew S. Tanenbaum CommercialUNIX UnixWare AT&T Solaris (SUN) HP-UX AIX IRIX Android 16
Distribution OS built on Linux kernel Device driver libraries, utilities Software applications Package management system Graphics support (GUI) 17
How to Use Linux On your computer LiveDistro (a.k.a. LiveCD) Dual-boot (or multi-boot) Virtualization Hardware virtualization OS virtualization In the cloud Installation on IaaS (Infrastructure as a service) such as Amazon Elastic Compute Cloud (EC2) 18
Concept of Virtualization Hypervisor Virtual machine monitor App App App OS Guest OS Guest OS Hypervisor Virtual HW Virtual HW Host OS Hosted Virtualization Layer HW HW Hypervisor Native 19
Hardware Virtualization Type Native (Bare-metal) Specialized Hosted Independent Software Hyper-V, KVM, Red Hat Enterprise Virtualization, VMware ESXi, Xen Bochs, Mac-on-Linux, Mac-on-Mac, Windows on Windows VirtualBox, VMware Fusion/Player/Workstation/Server 20
Assignment #1 Choose one of hypervisors and install it on your h ost operating system. VirtualBox is recommended. Install Ubuntu Desktop in the hypervisor. Long Term Support (LTS) version of Ubuntu is recommended. Take a snapshot just after initial booting. Update OS if there is any. Play around with it. Complete a report and upload it on PLMS by Mar. 6. 21
Assignment #1 Information Title: [id-name]assignment1 File name: [id-name]assignment1.xxx Write a private post so that no one see yours. When you upload, please don t forget to attach the file. If you do blog, youtube or something like that and want to utilize yours, you may post it instead of uploading a file. In this case, leave a link on PLMS. 22
Reference Download Oracle VirtualBox https://www.virtualbox.org/wiki/downloads Download Ubuntu Desktop https://www.ubuntu.com/download/desktop Install Ubuntu https://www.ubuntu.com/download/desktop/insta ll-ubuntu-desktop Ubuntu Desktop Guide https://help.ubuntu.com/lts/ubuntu-help/index.ht ml 23