introduction to open source software development spring...

23
OPEN SOURCE SOFTWARE Introduction to Open Source Software Development Spring semester, 2017 School of Computer Science and Engineering, Pusan National University Joon-Seok Kim

Upload: hahanh

Post on 06-Mar-2018

219 views

Category:

Documents


0 download

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

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

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

14

HitsLink (May 2014)

Gartner (Feb. 2014) IDC Q4 (2013)

IDC (2013 Year End)

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

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