SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
오픈소스를
사용하고, 준비하는
개발자를 위한 가이드
황은경(violet.blue)
kakao corp.(OSA)
“
FOSS
(Free and Open Source Software)
저작권자가 소스코드를 공개하여 누구나 자유롭게
사용, 수정, 재배포 할 수 있는 자유로운 소프트웨어
“ If I have seen further it is by standing
on the shoulders of Giants ”
- Isaac Newton
/*
* Copyright (c) 1995, 2008, Oracle and/or its affiliates. All
rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* - Neither the name of Oracle or the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/** The HelloWorldApp class implements an application that simply prints "Hello World!" to
standard output. */

class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}
“코드를 사용하면서 출처를 밝히는 것은
개발자의 의무사항”
License, copyright 유지
기본적인 의무사항
Open Source License 구분
Public Domain
free for all
MIT / X11
BSD-New
Apache 2.0
GPL 2
AGPL 3
LGPL 2.1+
LGPL 3 or
LGPL 3+
MPL 1.1
GPL 3 or
GPL 3+
GPL 2+
keep-on share-alike
Network
Protective
LGPL 2.1
• 소스코드를 공개하지 않아도 되는 대표적인 라이선스
• 저작권 명시(고지문)
• 적용 사례 : Nginx(The BSD 2-Clause License)

• MIT에서 해당 대학의 SW 공학도들을 돕기 위해 개발한 라이선스
• 라이선스 및 저작권 명시(고지문)
• 적용 사례 : 부트스트랩 , Angular.js, Backbone.js, jQuery
• 아파치 재단의 모든 SW에 적용되는 라이선스
• BSD 의무사항 + 특허권(GPL2.0으로 배포되는 코드와는 결합 불가능)
• 적용 사례 : 안드로이드(v2.0), 하둡(v2.0)
일반적으로 사용하는 라이선스
Apache
BSD
MIT
• 수정한 소스코드 LGPL로 공개 (Static Linking 으로 사용하면 전체 코드 공개)
• 라이선스 및 저작권 명시
• 적용 사례 : 모질라 파이어폭스(v2.1)
• GPL 소스코드를 이용한 소프트웨어 전체 GPL로 공개
• 라이선스 및 저작권 명시
• 적용 사례 : 리눅스 커널(v2.0)
• AGPL 소스코드를 이용한 소프트웨어 전체 AGPL로 공개. 웹서비스 포함!
• 라이선스 및 저작권 명시
• 적용 사례 : 몽고DB(v3.0)
■ Database Server and Tools : AGPL 3.0
■ Drivers : Apache 2.0
LGPL
GPL
주의해야 할 라이선스
AGPL
personally
외부 배포 O
public
3rd
party
외부 배포 X
private내부
전용
바이너리
웹
서비스
소스코드
판매
AGPL : 웹서비스도 적용 된다고 명시
라이선스 적용 범위
➺ 오픈소스 소프트웨어의 배포의 개념?
“소스코드 및/또는 바이너리 (실행) 코드의 카피를 다른 사람에게 제공하는 행위(to give someone
else a copy of its code — either its source code, or its binary (executable) code, or both)”
[출처] Open Source Initiative (https://opensource.org)
XX 소스코드야 땡큐~
배포 !
USB
✓ 모바일앱의 성장
✓ 전 세계 공개SW 단체에 의한 모니터링
✓ 오픈소스 증가 -> 저작권자 증가
오픈소스 Compliance 이슈 증가
Free Software Foundation
GNU 프로젝트 운영 및 Free SW 배포/관리


OSI (Open source Initiative)
OSS 라이선스 인증 관리


GPL Violations
GPL 라이선스 기반의 저작권 보호 및 소송지원 단체


SFLC (Software Freedom Law Center)
OSS 개발자를 위한 법적 자문기관

기타 : Linux Foundation, FOSS, OIN(Open
Innovation Network), 국내 OSSF 등
OSS 대표 단체
• SW는 SW에 관한 지적재산권에 의해 보호 받고 있는데, 원칙적으로 저작권자만이 해당 SW에 대한 

독점 사용 권리를 갖는다.
• 라이선스(License)는 이러한 독점 사용 권리에 대해 SW 개발자와 사용자간의 이용방법 및 조건의 

범위를 명시한 대여 규칙을 정의해 놓은 사용 허가권(License)으로 대여의 방법은 유료 및 무료로 

구분된다.
Software의 지적재산권과 라이선스
오픈소스 사용자는 라이선스를 준수해야 할 의무가 있습니다.
형사처벌 판매금지와 손해배상 소스코드 공개
기업 이미지 손상
저작권법
라이선스 분쟁
Xiaomi: MIUI / 리눅스 커널 기반 GPL 코드 포함 (2014년)
해당 소스 코드 공개 - 2015.3.31
스카이프 리눅스 전화단말기 'WSKP100’ : 리눅스 커널 코드 사용 (2007년)
소스코드 공개 및 벌금 지불 판결
유통 업체에게도 GPL위반 책임. 본국이 아닌 다른 나라에서 소송/판결
엘림넷 v. 하이온넷: 영업비밀침해와 VTUND (GPL) (2005년)
엘림넷에서 VTUND 를 기반으로 개발한 ETUND를 하이온넷에서 HL로 개작 및 상용화

엘림넷은 영업비밀침해에 대한 고소, FSF와 GNU는 저작권법 위반 경고 ▶ 소스 코드 공개
Google, Oracle 자바 소송
❄ Google이 Android 에 java api 37개 사용
❄ Oracle이 특허 및 저작권 침해 10조($90억) 손해배상 소송
❄ History
○ 2012년 1심 : API 저작권 인정하지 않음
○ 2014년 항소심 : API 저작권 인정
○ 2015년 연방대법원 : API 저작권 인정 확정, 공정이용 여부 확인을 위해 1심으로 돌려 보냄
○ 2016년 1심 : 공정이용 판결
○ 2018년 항소심 : 공정이용 아니다 구글 배상하라고 판결
VMWare, 리눅스 개발자 소송
❄ VMWare:ESXi에 리눅스 커널 코드 사용
❄ 일반 개발자(크리스토프 헬비그)가 고소 진행, 오픈소스 관련 단체 지원
❄ 지난해 8월 함부르크 지방법원은 소송 기각 결정
○ ESXi의 Vmklinux 에서 사용중으로 소스 코드 제공하고 있음 - GPL 준수
○ Vmkernel 에는 사용되지 않음
○ Vmklinux와 Vmkernel 의 결합방식은 다루지 않음
❄ 크리스토프 헬비그는 항소를 밝힌 상태
❄ 라이선스 소송은 본국이 아닌 다른 나라에서도 가능
❄ 미국법원에서 오픈소스 라이선스가 집행력 있는 계약임을 인정
❄ 손해배상은 침해로 인해 내가 얻지 못한 이익+침해자가 얻은 이익 등을 고려해서 결정
❄ 상용화를 포함한 라이선스 채택은 저작권자의 고유 권한

➺ 다중 라이선스(Multi License)?
- 하나의 코드를 2가지(dual license)혹은 그 이상의 라이선스로 배포하는 형태
- 저작권자가 선택 사항으로 독자적인 유료 보증 설정
라이선스 분쟁 이슈 체크
GPL 사용 = GPL로 소스 코드 공개
GPL을 사용한 프로젝트를 배포한 경우 그 프로젝트의 전체 소스코드를 공개해야 함
✼ AGPL은 네트워크로 연결되어 연동되는 프로그램의 전체 소스코드 공개(웹서비스도 공개)
GPL2.0 + Apache2.0 = 배포 불가능
프로젝트에 GPL2.0과 Apache2.0 오픈소스를 같이 사용했다면 배포할 수 없음
Apache2.0의 특허 보복 조항을 GPL2.0에서는 보장하지 않아 라이선스 충돌(양립불가능)
※ 특허 보복 : 사용자가 특허 소송 제기시 라이선스 종료(사용불가)되고 사용료 청구
LGPL2.1 + Apache2.0 = 결합방식에 따라 배포 불가능 할 수 있음
LGPL2.1도 특허 보장하지 않으므로 라이선스 충돌(양립불가능)
라이선스의 적용 범위에 따라 LGPL2.1을 사용한 코드가 Apache2.0 오픈소스를 사용한
코드와는 독립적으로 사용(Dynamic Linking)되고 있는 경우는 배포 가능
GPL 알고 씁시다!
❄ 투명한 코드 > 가시성 확보, 책임감/능력 향상
❄ 커뮤니케이션 > 문서화, 이슈 생성, 커밋 로그, 거버넌스
❄ 기술 중심 > 코드를 중심으로 의사소통과 의사결정
❄ 개인 명성 > 소스 코드, 커밋 로그, 프로필
http://rankedin.kr/users
http://rankedin.kr/repos
❄ 다양성 보장 > 발견과 개선, 선택과 집중
오픈소스 공유 및 기여
라이선스 명시
라이선스를 명시하지 않으면 기본 저작권법이 적용되어 타인이 저작물을 복제,배포 할 수 없음
https://help.github.com/articles/licensing-a-repository/
(코드 사용시에도 라이선스가 없는 코드는 기본 저작권법 적용됨)
사용한 오픈소스의 라이선스 의무사항 준수
사용한 오픈소스를 명시하고 해당 라이선스의 의무사항을 준수해야 함
의무조항의 충돌로 함께 사용할 수 없는 라이선스가 있는지도 확인(Compatibility)
- Apache2.0 , OFL 등 차별조항이 있는 라이선스는 GPL2.0과 충돌
적합한 라이선스 채택
사용한 오픈소스 라이선스와 호환되는 라이선스를 채택해야 함 (GPL 사용 = GPL 배포)
자신의 오픈소스의 공유 목적에 맞는 라이선스를 채택 

GPL은 사용제한을 할 수 없음
코드 공개 및 배포시 주의사항
카카오
오픈소스 Gu
카카오의
오픈소스 Guidance
프로세스와 정책의 강제? No!
“오픈소스를 잘 사용하고, 오픈소스에 기여할 수 있도록 돕는다.”
❄ 오픈소스 라이선스 확인과 고지문 발급 자동화, 효율화
❄ 오픈소스 프로젝트(코드 공개) 지원
❄ 오픈소스 사용현황 제공
오픈소스 Guidance
Hermes
카카오의 오픈소스 관리 시스템
❄ Dependency 관리
❄ 고지문 발급 자동화
❄ Protex 연동
❄ OSS DB 구축을 통한 검증 데이타 고도화
Hermes
Dependency 분석
Protex 연동
OSS 매핑
Source
CSV
Legal Notice
Target
Dependency 설정 파일, 내/외부 라이브러리
Analysis & Mapping
Dependency 설정 파일 분석
고지될 OSS 로 매핑
Remember (Auto Mapping)
분석/매핑된 대상 저장, 자동 매칭
Dependency 분석
dependencies {
implementation ‘com.google.code.gson:gson:2.8.1'
}
Name : google-goon
URL : https://github.com/google/gson
License : Apache License 2.0
Copyright : Copyright 2008 Google Inc.
build.gradle
iOS_Mac
Operator
2%
Protex
36%
Dependency
62%
Operator
1%
Protex
38%
Dependency
61%
Operator
1%
Protex
61%
Dependency
38%
CommAndroid
OSS 확인 위치
Operator
1%
Protex
43% Dependency
55%
DB
kakao OSS, License DB 구축
Data 정합성
주기적인 Data 확인 및 개선을 통한 Data 정합성
Automation
검증했던 OSS와 Dependency 자동 매칭
자동 매칭 비율, 자동 매칭 후보 등의 통계자료 확인 및 개선으로 자동화 비율 증대
검증 효율화, 고도화
자동 매칭 비율
자동 매칭
0
20
40
60
80
100
(월) 1 2 3 4 5 6
0
25
50
75
100
(월) 1 2 3 4 5 6
dependency protex
자동 매칭 후보
신규 Device 프로젝트 검증시 대부분 수동 매칭됨
카카오톡 Andriod, iOS 각각 100개 이상 오픈소스 사용 고지
오픈소스 사용 및 고지
페이스북 250여개 사용
(2015년 기준)
사용중인 오픈소스 약 1,700개 (2018년 8월 기준)
6%
6%
87%
1%
3%
7%
9%
20%
58%
Apache 2.0
License Statistics by Device
BSD
MIT
Apache 2.0
MIT
BSD
Apple
MIT
zlib
Android iOS
github.com/kakao
http://tech.kakao.com/opensource/
1. 오픈 여부 승인 - 팀 리더 및 기술 직군 리더 승인
2. 사내 코드/라이브러리의 오픈 계획안 작성
3. 특허, 오픈소스 라이선스 확인 - 법무 + OSA 지원
4. 저장소 명칭(github.com/kakao/[reopository-name]) 확정
github.com/kakao > Private 저장소로 코드/라이브러리 이동
5. License 확정 - Apache 2.0 추천
Readme / CONTRIBUTING / CLA(Contributor License Agreement) 추가
6. 사용자/기여자와 커뮤니케이션 채널 준비, Company repository 팀 멤버 권한 조정
7. 오픈 (Private > Public 전환)
코드 공개 프로세스
Remind
오픈소스 출처 고지 및 copyright 유지
코드를 수정할 경우 코드의 출처를 유지하고 내 copyright 추가
LGPL < GPL < AGPL
- 오픈소스 라이선스 의무사항 준수 (라이선스 감염 & 코드 공개)
- 코드 수정
- 라이선스 구매
참고) 공개SW 포털, OLIS
- 오픈소스 라이선스 가이드 문서 제공
- 오픈소스 라이선스 문의
- 사용한 오픈소스 라이선스 확인 (대상 : 국내 개인, 대학, 중소기업)
Thanks!
ANY QUESTIONS?

Weitere ähnliche Inhalte

Was ist angesagt?

김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
min woog kim
 
Rd gatewayによるwindowsインスタンスへの接続
Rd gatewayによるwindowsインスタンスへの接続Rd gatewayによるwindowsインスタンスへの接続
Rd gatewayによるwindowsインスタンスへの接続
Amazon Web Services Japan
 

Was ist angesagt? (20)

김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
 
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective Git
 
Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심
Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심
Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심
 
Rd gatewayによるwindowsインスタンスへの接続
Rd gatewayによるwindowsインスタンスへの接続Rd gatewayによるwindowsインスタンスへの接続
Rd gatewayによるwindowsインスタンスへの接続
 
카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험카카오스토리 웹팀의 코드리뷰 경험
카카오스토리 웹팀의 코드리뷰 경험
 
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
 
바닥부터 시작하는 Vue 테스트와 리팩토링
바닥부터 시작하는 Vue 테스트와 리팩토링바닥부터 시작하는 Vue 테스트와 리팩토링
바닥부터 시작하는 Vue 테스트와 리팩토링
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
 
해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack Solution해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack Solution
 
Machine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIMachine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AI
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성
 
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스
 
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
 
Testing strategies for Docker containers
Testing strategies for Docker containersTesting strategies for Docker containers
Testing strategies for Docker containers
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8s
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
오픈 소스와 독점소프트웨어 : 그 이해와 전략적 활용
오픈 소스와 독점소프트웨어 : 그 이해와 전략적 활용 오픈 소스와 독점소프트웨어 : 그 이해와 전략적 활용
오픈 소스와 독점소프트웨어 : 그 이해와 전략적 활용
 

Ähnlich wie 오픈소스를 사용하고, 준비하는 개발자를 위한 가이드

[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해
[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해
[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해
MINWHO Law Group
 
[uengine.org-uEngine Day] Open Source SW 활용방안및 uEngine BPMS V.4 발표자료
[uengine.org-uEngine Day] Open Source SW 활용방안및 uEngine BPMS V.4 발표자료[uengine.org-uEngine Day] Open Source SW 활용방안및 uEngine BPMS V.4 발표자료
[uengine.org-uEngine Day] Open Source SW 활용방안및 uEngine BPMS V.4 발표자료
Hannah Kim
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1
YoungSu Son
 

Ähnlich wie 오픈소스를 사용하고, 준비하는 개발자를 위한 가이드 (20)

[공간정보연구원] 1일차 - 오픈소스GIS 개요
[공간정보연구원] 1일차 - 오픈소스GIS 개요[공간정보연구원] 1일차 - 오픈소스GIS 개요
[공간정보연구원] 1일차 - 오픈소스GIS 개요
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
Introduction to FOSS4G & OSGeo for KRIHS
Introduction to FOSS4G & OSGeo for KRIHSIntroduction to FOSS4G & OSGeo for KRIHS
Introduction to FOSS4G & OSGeo for KRIHS
 
Open source engineering
Open source engineeringOpen source engineering
Open source engineering
 
[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해
[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해
[법무법인 민후 | 김경환 변호사] 오픈소스소프트웨어(OSS) 저작권과 라이선스의 이해
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1]
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1][개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1]
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1]
 
오픈소스소프트웨어와 지식재산권
오픈소스소프트웨어와 지식재산권오픈소스소프트웨어와 지식재산권
오픈소스소프트웨어와 지식재산권
 
16.02.27 해킹캠프 오픈 소스 최우석
16.02.27 해킹캠프 오픈 소스 최우석16.02.27 해킹캠프 오픈 소스 최우석
16.02.27 해킹캠프 오픈 소스 최우석
 
16.02.27 해킹캠프 오픈_소스_최우석_ver0.3
16.02.27 해킹캠프 오픈_소스_최우석_ver0.316.02.27 해킹캠프 오픈_소스_최우석_ver0.3
16.02.27 해킹캠프 오픈_소스_최우석_ver0.3
 
OSS SW Basics Lecture 04: OSS Licenses and documentation
OSS SW Basics Lecture 04: OSS Licenses and documentationOSS SW Basics Lecture 04: OSS Licenses and documentation
OSS SW Basics Lecture 04: OSS Licenses and documentation
 
제 5회 D2 CAMPUS FEST O.T - 오픈소스 라이선스
제 5회 D2 CAMPUS FEST O.T - 오픈소스 라이선스제 5회 D2 CAMPUS FEST O.T - 오픈소스 라이선스
제 5회 D2 CAMPUS FEST O.T - 오픈소스 라이선스
 
OpenSource License
OpenSource LicenseOpenSource License
OpenSource License
 
오픈 소스 GIS와 OSGeo
오픈 소스 GIS와 OSGeo오픈 소스 GIS와 OSGeo
오픈 소스 GIS와 OSGeo
 
[uengine.org-uEngine Day] Open Source SW 활용방안및 uEngine BPMS V.4 발표자료
[uengine.org-uEngine Day] Open Source SW 활용방안및 uEngine BPMS V.4 발표자료[uengine.org-uEngine Day] Open Source SW 활용방안및 uEngine BPMS V.4 발표자료
[uengine.org-uEngine Day] Open Source SW 활용방안및 uEngine BPMS V.4 발표자료
 
The practice of handling with FOSS by GPL v2inthe automotive
The practice of handling with FOSS by GPL v2inthe automotiveThe practice of handling with FOSS by GPL v2inthe automotive
The practice of handling with FOSS by GPL v2inthe automotive
 
회색지대: 이상과 현실 - 오픈소스 저작권
회색지대: 이상과 현실 - 오픈소스 저작권회색지대: 이상과 현실 - 오픈소스 저작권
회색지대: 이상과 현실 - 오픈소스 저작권
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1
 
02.[참고]오픈소스sw라이선스가이드라인
02.[참고]오픈소스sw라이선스가이드라인02.[참고]오픈소스sw라이선스가이드라인
02.[참고]오픈소스sw라이선스가이드라인
 
[오픈소스컨설팅]오픈소스개요 및 동향_v2
[오픈소스컨설팅]오픈소스개요 및 동향_v2[오픈소스컨설팅]오픈소스개요 및 동향_v2
[오픈소스컨설팅]오픈소스개요 및 동향_v2
 
오픈소스 라이선스
오픈소스 라이선스오픈소스 라이선스
오픈소스 라이선스
 

Mehr von if kakao

Mehr von if kakao (20)

카카오커머스를 지탱하는 Angular
카카오커머스를 지탱하는 Angular카카오커머스를 지탱하는 Angular
카카오커머스를 지탱하는 Angular
 
프렌즈타임 웹앱 삽질기
프렌즈타임 웹앱 삽질기프렌즈타임 웹앱 삽질기
프렌즈타임 웹앱 삽질기
 
카프카 기반의 대규모 모니터링 플랫폼 개발이야기
카프카 기반의 대규모 모니터링 플랫폼 개발이야기카프카 기반의 대규모 모니터링 플랫폼 개발이야기
카프카 기반의 대규모 모니터링 플랫폼 개발이야기
 
TOROS N2 - lightweight approximate Nearest Neighbor library
TOROS N2 - lightweight approximate Nearest Neighbor libraryTOROS N2 - lightweight approximate Nearest Neighbor library
TOROS N2 - lightweight approximate Nearest Neighbor library
 
딥러닝을 이용한 얼굴 인식
딥러닝을 이용한 얼굴 인식딥러닝을 이용한 얼굴 인식
딥러닝을 이용한 얼굴 인식
 
딥러닝을 활용한 뉴스 메타 태깅
딥러닝을 활용한 뉴스 메타 태깅딥러닝을 활용한 뉴스 메타 태깅
딥러닝을 활용한 뉴스 메타 태깅
 
눈으로 듣는 음악 추천 시스템
눈으로 듣는 음악 추천 시스템눈으로 듣는 음악 추천 시스템
눈으로 듣는 음악 추천 시스템
 
Keynote / 2018
Keynote / 2018Keynote / 2018
Keynote / 2018
 
카카오 봇 플랫폼 소개
카카오 봇 플랫폼 소개카카오 봇 플랫폼 소개
카카오 봇 플랫폼 소개
 
다음웹툰의 UX(Animation, Transition, Custom View)
다음웹툰의 UX(Animation, Transition, Custom View)다음웹툰의 UX(Animation, Transition, Custom View)
다음웹툰의 UX(Animation, Transition, Custom View)
 
모바일 게임플랫폼과 인프라 구축 경험기
모바일 게임플랫폼과 인프라 구축 경험기모바일 게임플랫폼과 인프라 구축 경험기
모바일 게임플랫폼과 인프라 구축 경험기
 
카카오뱅크 모바일앱 개발 이야기
카카오뱅크 모바일앱 개발 이야기카카오뱅크 모바일앱 개발 이야기
카카오뱅크 모바일앱 개발 이야기
 
다음 모바일 첫 화면 개선기
다음 모바일 첫 화면 개선기다음 모바일 첫 화면 개선기
다음 모바일 첫 화면 개선기
 
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
 
액티브X 없는 블록체인 기반 PKI 시스템
액티브X 없는 블록체인 기반 PKI 시스템액티브X 없는 블록체인 기반 PKI 시스템
액티브X 없는 블록체인 기반 PKI 시스템
 
Klaytn: Service-Oriented Enterprise-Grade Public Blockchain Platform
Klaytn: Service-Oriented Enterprise-Grade Public Blockchain PlatformKlaytn: Service-Oriented Enterprise-Grade Public Blockchain Platform
Klaytn: Service-Oriented Enterprise-Grade Public Blockchain Platform
 
Kakao Cloud Native Platform, 9rum
Kakao Cloud Native Platform, 9rumKakao Cloud Native Platform, 9rum
Kakao Cloud Native Platform, 9rum
 
카프카, 산전수전 노하우
카프카, 산전수전 노하우카프카, 산전수전 노하우
카프카, 산전수전 노하우
 
스프링5 웹플럭스와 테스트 전략
스프링5 웹플럭스와 테스트 전략스프링5 웹플럭스와 테스트 전략
스프링5 웹플럭스와 테스트 전략
 
카카오톡의 서버사이드 코틀린
카카오톡의 서버사이드 코틀린카카오톡의 서버사이드 코틀린
카카오톡의 서버사이드 코틀린
 

오픈소스를 사용하고, 준비하는 개발자를 위한 가이드

  • 1. 오픈소스를 사용하고, 준비하는 개발자를 위한 가이드 황은경(violet.blue) kakao corp.(OSA)
  • 2. “ FOSS (Free and Open Source Software) 저작권자가 소스코드를 공개하여 누구나 자유롭게 사용, 수정, 재배포 할 수 있는 자유로운 소프트웨어 “ If I have seen further it is by standing on the shoulders of Giants ” - Isaac Newton
  • 3. /* * Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - Neither the name of Oracle or the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /** The HelloWorldApp class implements an application that simply prints "Hello World!" to standard output. */
 class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); // Display the string. } } “코드를 사용하면서 출처를 밝히는 것은 개발자의 의무사항” License, copyright 유지 기본적인 의무사항
  • 4. Open Source License 구분 Public Domain free for all MIT / X11 BSD-New Apache 2.0 GPL 2 AGPL 3 LGPL 2.1+ LGPL 3 or LGPL 3+ MPL 1.1 GPL 3 or GPL 3+ GPL 2+ keep-on share-alike Network Protective LGPL 2.1
  • 5. • 소스코드를 공개하지 않아도 되는 대표적인 라이선스 • 저작권 명시(고지문) • 적용 사례 : Nginx(The BSD 2-Clause License)
 • MIT에서 해당 대학의 SW 공학도들을 돕기 위해 개발한 라이선스 • 라이선스 및 저작권 명시(고지문) • 적용 사례 : 부트스트랩 , Angular.js, Backbone.js, jQuery • 아파치 재단의 모든 SW에 적용되는 라이선스 • BSD 의무사항 + 특허권(GPL2.0으로 배포되는 코드와는 결합 불가능) • 적용 사례 : 안드로이드(v2.0), 하둡(v2.0) 일반적으로 사용하는 라이선스 Apache BSD MIT
  • 6. • 수정한 소스코드 LGPL로 공개 (Static Linking 으로 사용하면 전체 코드 공개) • 라이선스 및 저작권 명시 • 적용 사례 : 모질라 파이어폭스(v2.1) • GPL 소스코드를 이용한 소프트웨어 전체 GPL로 공개 • 라이선스 및 저작권 명시 • 적용 사례 : 리눅스 커널(v2.0) • AGPL 소스코드를 이용한 소프트웨어 전체 AGPL로 공개. 웹서비스 포함! • 라이선스 및 저작권 명시 • 적용 사례 : 몽고DB(v3.0) ■ Database Server and Tools : AGPL 3.0 ■ Drivers : Apache 2.0 LGPL GPL 주의해야 할 라이선스 AGPL
  • 7. personally 외부 배포 O public 3rd party 외부 배포 X private내부 전용 바이너리 웹 서비스 소스코드 판매 AGPL : 웹서비스도 적용 된다고 명시 라이선스 적용 범위
  • 8. ➺ 오픈소스 소프트웨어의 배포의 개념? “소스코드 및/또는 바이너리 (실행) 코드의 카피를 다른 사람에게 제공하는 행위(to give someone else a copy of its code — either its source code, or its binary (executable) code, or both)” [출처] Open Source Initiative (https://opensource.org) XX 소스코드야 땡큐~ 배포 ! USB
  • 9. ✓ 모바일앱의 성장 ✓ 전 세계 공개SW 단체에 의한 모니터링 ✓ 오픈소스 증가 -> 저작권자 증가 오픈소스 Compliance 이슈 증가
  • 10. Free Software Foundation GNU 프로젝트 운영 및 Free SW 배포/관리 
 OSI (Open source Initiative) OSS 라이선스 인증 관리 
 GPL Violations GPL 라이선스 기반의 저작권 보호 및 소송지원 단체 
 SFLC (Software Freedom Law Center) OSS 개발자를 위한 법적 자문기관
 기타 : Linux Foundation, FOSS, OIN(Open Innovation Network), 국내 OSSF 등 OSS 대표 단체
  • 11. • SW는 SW에 관한 지적재산권에 의해 보호 받고 있는데, 원칙적으로 저작권자만이 해당 SW에 대한 
 독점 사용 권리를 갖는다. • 라이선스(License)는 이러한 독점 사용 권리에 대해 SW 개발자와 사용자간의 이용방법 및 조건의 
 범위를 명시한 대여 규칙을 정의해 놓은 사용 허가권(License)으로 대여의 방법은 유료 및 무료로 
 구분된다. Software의 지적재산권과 라이선스 오픈소스 사용자는 라이선스를 준수해야 할 의무가 있습니다.
  • 12. 형사처벌 판매금지와 손해배상 소스코드 공개 기업 이미지 손상 저작권법
  • 14. Xiaomi: MIUI / 리눅스 커널 기반 GPL 코드 포함 (2014년) 해당 소스 코드 공개 - 2015.3.31 스카이프 리눅스 전화단말기 'WSKP100’ : 리눅스 커널 코드 사용 (2007년) 소스코드 공개 및 벌금 지불 판결 유통 업체에게도 GPL위반 책임. 본국이 아닌 다른 나라에서 소송/판결 엘림넷 v. 하이온넷: 영업비밀침해와 VTUND (GPL) (2005년) 엘림넷에서 VTUND 를 기반으로 개발한 ETUND를 하이온넷에서 HL로 개작 및 상용화
 엘림넷은 영업비밀침해에 대한 고소, FSF와 GNU는 저작권법 위반 경고 ▶ 소스 코드 공개
  • 15. Google, Oracle 자바 소송 ❄ Google이 Android 에 java api 37개 사용 ❄ Oracle이 특허 및 저작권 침해 10조($90억) 손해배상 소송 ❄ History ○ 2012년 1심 : API 저작권 인정하지 않음 ○ 2014년 항소심 : API 저작권 인정 ○ 2015년 연방대법원 : API 저작권 인정 확정, 공정이용 여부 확인을 위해 1심으로 돌려 보냄 ○ 2016년 1심 : 공정이용 판결 ○ 2018년 항소심 : 공정이용 아니다 구글 배상하라고 판결
  • 16. VMWare, 리눅스 개발자 소송 ❄ VMWare:ESXi에 리눅스 커널 코드 사용 ❄ 일반 개발자(크리스토프 헬비그)가 고소 진행, 오픈소스 관련 단체 지원 ❄ 지난해 8월 함부르크 지방법원은 소송 기각 결정 ○ ESXi의 Vmklinux 에서 사용중으로 소스 코드 제공하고 있음 - GPL 준수 ○ Vmkernel 에는 사용되지 않음 ○ Vmklinux와 Vmkernel 의 결합방식은 다루지 않음 ❄ 크리스토프 헬비그는 항소를 밝힌 상태
  • 17. ❄ 라이선스 소송은 본국이 아닌 다른 나라에서도 가능 ❄ 미국법원에서 오픈소스 라이선스가 집행력 있는 계약임을 인정 ❄ 손해배상은 침해로 인해 내가 얻지 못한 이익+침해자가 얻은 이익 등을 고려해서 결정 ❄ 상용화를 포함한 라이선스 채택은 저작권자의 고유 권한
 ➺ 다중 라이선스(Multi License)? - 하나의 코드를 2가지(dual license)혹은 그 이상의 라이선스로 배포하는 형태 - 저작권자가 선택 사항으로 독자적인 유료 보증 설정 라이선스 분쟁 이슈 체크
  • 18. GPL 사용 = GPL로 소스 코드 공개 GPL을 사용한 프로젝트를 배포한 경우 그 프로젝트의 전체 소스코드를 공개해야 함 ✼ AGPL은 네트워크로 연결되어 연동되는 프로그램의 전체 소스코드 공개(웹서비스도 공개) GPL2.0 + Apache2.0 = 배포 불가능 프로젝트에 GPL2.0과 Apache2.0 오픈소스를 같이 사용했다면 배포할 수 없음 Apache2.0의 특허 보복 조항을 GPL2.0에서는 보장하지 않아 라이선스 충돌(양립불가능) ※ 특허 보복 : 사용자가 특허 소송 제기시 라이선스 종료(사용불가)되고 사용료 청구 LGPL2.1 + Apache2.0 = 결합방식에 따라 배포 불가능 할 수 있음 LGPL2.1도 특허 보장하지 않으므로 라이선스 충돌(양립불가능) 라이선스의 적용 범위에 따라 LGPL2.1을 사용한 코드가 Apache2.0 오픈소스를 사용한 코드와는 독립적으로 사용(Dynamic Linking)되고 있는 경우는 배포 가능 GPL 알고 씁시다!
  • 19. ❄ 투명한 코드 > 가시성 확보, 책임감/능력 향상 ❄ 커뮤니케이션 > 문서화, 이슈 생성, 커밋 로그, 거버넌스 ❄ 기술 중심 > 코드를 중심으로 의사소통과 의사결정 ❄ 개인 명성 > 소스 코드, 커밋 로그, 프로필 http://rankedin.kr/users http://rankedin.kr/repos ❄ 다양성 보장 > 발견과 개선, 선택과 집중 오픈소스 공유 및 기여
  • 20. 라이선스 명시 라이선스를 명시하지 않으면 기본 저작권법이 적용되어 타인이 저작물을 복제,배포 할 수 없음 https://help.github.com/articles/licensing-a-repository/ (코드 사용시에도 라이선스가 없는 코드는 기본 저작권법 적용됨) 사용한 오픈소스의 라이선스 의무사항 준수 사용한 오픈소스를 명시하고 해당 라이선스의 의무사항을 준수해야 함 의무조항의 충돌로 함께 사용할 수 없는 라이선스가 있는지도 확인(Compatibility) - Apache2.0 , OFL 등 차별조항이 있는 라이선스는 GPL2.0과 충돌 적합한 라이선스 채택 사용한 오픈소스 라이선스와 호환되는 라이선스를 채택해야 함 (GPL 사용 = GPL 배포) 자신의 오픈소스의 공유 목적에 맞는 라이선스를 채택 
 GPL은 사용제한을 할 수 없음 코드 공개 및 배포시 주의사항
  • 22. 프로세스와 정책의 강제? No! “오픈소스를 잘 사용하고, 오픈소스에 기여할 수 있도록 돕는다.” ❄ 오픈소스 라이선스 확인과 고지문 발급 자동화, 효율화 ❄ 오픈소스 프로젝트(코드 공개) 지원 ❄ 오픈소스 사용현황 제공 오픈소스 Guidance
  • 23. Hermes 카카오의 오픈소스 관리 시스템 ❄ Dependency 관리 ❄ 고지문 발급 자동화 ❄ Protex 연동 ❄ OSS DB 구축을 통한 검증 데이타 고도화
  • 24. Hermes Dependency 분석 Protex 연동 OSS 매핑 Source CSV Legal Notice
  • 25. Target Dependency 설정 파일, 내/외부 라이브러리 Analysis & Mapping Dependency 설정 파일 분석 고지될 OSS 로 매핑 Remember (Auto Mapping) 분석/매핑된 대상 저장, 자동 매칭 Dependency 분석
  • 26. dependencies { implementation ‘com.google.code.gson:gson:2.8.1' } Name : google-goon URL : https://github.com/google/gson License : Apache License 2.0 Copyright : Copyright 2008 Google Inc. build.gradle
  • 28. DB kakao OSS, License DB 구축 Data 정합성 주기적인 Data 확인 및 개선을 통한 Data 정합성 Automation 검증했던 OSS와 Dependency 자동 매칭 자동 매칭 비율, 자동 매칭 후보 등의 통계자료 확인 및 개선으로 자동화 비율 증대 검증 효율화, 고도화
  • 29. 자동 매칭 비율 자동 매칭 0 20 40 60 80 100 (월) 1 2 3 4 5 6 0 25 50 75 100 (월) 1 2 3 4 5 6 dependency protex 자동 매칭 후보 신규 Device 프로젝트 검증시 대부분 수동 매칭됨
  • 30. 카카오톡 Andriod, iOS 각각 100개 이상 오픈소스 사용 고지 오픈소스 사용 및 고지 페이스북 250여개 사용 (2015년 기준)
  • 31. 사용중인 오픈소스 약 1,700개 (2018년 8월 기준)
  • 32. 6% 6% 87% 1% 3% 7% 9% 20% 58% Apache 2.0 License Statistics by Device BSD MIT Apache 2.0 MIT BSD Apple MIT zlib Android iOS
  • 34. 1. 오픈 여부 승인 - 팀 리더 및 기술 직군 리더 승인 2. 사내 코드/라이브러리의 오픈 계획안 작성 3. 특허, 오픈소스 라이선스 확인 - 법무 + OSA 지원 4. 저장소 명칭(github.com/kakao/[reopository-name]) 확정 github.com/kakao > Private 저장소로 코드/라이브러리 이동 5. License 확정 - Apache 2.0 추천 Readme / CONTRIBUTING / CLA(Contributor License Agreement) 추가 6. 사용자/기여자와 커뮤니케이션 채널 준비, Company repository 팀 멤버 권한 조정 7. 오픈 (Private > Public 전환) 코드 공개 프로세스
  • 35. Remind 오픈소스 출처 고지 및 copyright 유지 코드를 수정할 경우 코드의 출처를 유지하고 내 copyright 추가 LGPL < GPL < AGPL - 오픈소스 라이선스 의무사항 준수 (라이선스 감염 & 코드 공개) - 코드 수정 - 라이선스 구매 참고) 공개SW 포털, OLIS - 오픈소스 라이선스 가이드 문서 제공 - 오픈소스 라이선스 문의 - 사용한 오픈소스 라이선스 확인 (대상 : 국내 개인, 대학, 중소기업)