오픈소스를
사용하고, 준비하는
개발자를 위한 가이드
황은경(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?

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

  • 1.
    오픈소스를 사용하고, 준비하는 개발자를 위한가이드 황은경(violet.blue) kakao corp.(OSA)
  • 2.
    “ FOSS (Free and OpenSource 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.
    형사처벌 판매금지와 손해배상소스코드 공개 기업 이미지 손상 저작권법
  • 13.
  • 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은 사용제한을 할 수 없음 코드 공개 및 배포시 주의사항
  • 21.
  • 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
  • 27.
  • 28.
    DB kakao OSS, LicenseDB 구축 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 Statisticsby Device BSD MIT Apache 2.0 MIT BSD Apple MIT zlib Android iOS
  • 33.
  • 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 - 오픈소스 라이선스 가이드 문서 제공 - 오픈소스 라이선스 문의 - 사용한 오픈소스 라이선스 확인 (대상 : 국내 개인, 대학, 중소기업)
  • 36.