introduction to open source software development spring...
TRANSCRIPT
OPEN SOURCE SOFTWARE
Introduction to Open Source Software Development Spring semester, 2017 School of Computer Science and Engineering, Pusan National University Joon-Seok Kim
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 with 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
4 [1] https://opensource.org/osd
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
6
Public Domain Non-Protective FOSS License
Protective FOSS License
Proprietary License
Trade Secret
Rights in Copyright
All rights relinquished
All rights retained More rights granted More rights retained
Software Licenses & Rights
7
Software licenses and rights granted in context of the copyright according to Mark Webbink, expanded by freeware and sublicensing
Rights granted Public domain Non-protective FOSS license
Protective FOSS license
Freeware/ Shareware
Proprietary 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 license
Yes, under same license Often No No
Right to sublicense Yes Yes No No No No
https://en.wikipedia.org/wiki/Software_license
Popular Open Source Licenses
8
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
License Compatibility[1]
9
Permissive Weakly Protective Strongly Protective
Public Domain
MIT/X11
BSD-new
Apache 2.0
LGPLv2.1
LGPLv2.1+
LGPLv3 or LGPLv3+
MPL 1.1
GPLv2
GPLv2+
GPLv3 or GPLv3+
Affero GPLv3
[1] https://www.dwheeler.com/essays/floss-license-slide.html
Example of Apache 2.0 License File Header
10
/* * 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; ...
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
12 [1] http://www.roguewave.com/products-services/open-source-support
Example of open source software stack [1]
Usage Share of OS
13
Operating System (OS) Market Share for Desktop, Server, and Mobile Phones http://catalog.flatworldknowledge.com/bookhub/
reader/12375?e=fwk-38086-ch09_s02
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
16
1970 1980 1990 2000 2010
BSD family
BSD (Berkeley Software Distribution)
SunOS (Stanford)
Solaris (SUN)
NextStep 3.3 MacOS X
Xenix OS
GNU Project GNU/Linux
Android
Research UNIX
CommercialUNIX
FreeBSD
NetBSD
OpenBSD
HP-UX
AIX
IRIX
UnixWare
System III & V family
Minix Linux Tovalds
Microsoft/SCO
Bill Joy
Bell Labs
AT&T
Darwin
GNU/Hurd K16
iOS
Richard Stallman
Andrew S. Tanenbaum
Ken Thompson, Dennis Richie
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
19
HW
OS
App
Virtualization Layer
HW
Guest OS
App
Host OS
Hypervisor
Hypervisor
Guest OS
App
Virtual HW Virtual HW Hosted
Native
Hardware Virtualization
Type Software
Native (Bare-metal) Hyper-V, KVM, Red Hat Enterprise Virtualization,
VMware ESXi, Xen
Hosted Specialized
Bochs, Mac-on-Linux, Mac-on-Mac, Windows on Windows
Independent VirtualBox, VMware Fusion/Player/Workstation/Server
20
Assignment #1
Choose one of hypervisors and install it on your host 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