황은경(violet.blue) / kakao corp.(OSA)
---
오픈소스를 사용하면서 오픈소스 라이선스 의무사항을 지키고 있나요?
오픈소스를 준비하면서 (여러분의 프로젝트를 Github으로 오픈하기 위해) 어떤 오픈소스 라이선스로 배포해야 할지 알고 있나요?
오픈소스를 사용한다면 오픈소스 라이선스 의무사항을 준수하고,
오픈소스로 공개한다면 여러분의 코드를 보호하고 올바르게 사용되도록 하기 위해서 오픈소스 라이선스에 대한 이해가 필요합니다.
이 세션에서는 Apache, MIT, GPL 등의 오픈소스 라이선스 의무사항을 살펴보고, 오픈소스 분쟁사례를 통해 관련 리스크를 파악합니다. 더불어, 코드 공개 및 배포를 위한 오픈소스 라이선스의 양립성 및 주의사항을 확인하고, 카카오의 오픈소스 Guidance에 대해 소개합니다.
HAProxy TCP 모드에서 클라이언트의 Source IP를 내부 서버로 전달하는 방법을 알아봅니다.
* 중간에 오타가 있어서 수정본을 다시 업로드 하고자 했으나... SlideShare 측의 답변으로는 "Re-Upload 기능을 제거했다."라고 합니다. 부디 오타 등 부자연스러운 부분에 대해 너그럽게 이해를 부탁 드립니다.
Observability in Java: Getting Started with OpenTelemetryDevOps.com
Our software is more complex than ever: applications must be reliable, predictable, and easy to use to meet modern expectations. As developers, this means our responsibilities have grown while the things we can control have stayed the same. In order to better understand our systems and create truly modern software, we need observability.
This workshop will walk through what observability means for Java developers and how to achieve it in our systems with the least amount of work using the open source observability project OpenTelemetry.
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
황민호(robin.hwang) / kakao corp. DSP개발파트
---
최근 Spring Cloud와 Netflix OSS로 MSA를 구성하는 시스템 기반의 서비스들이 많아지는 추세입니다.
카카오에서도 작년에 오픈한 광고 플랫폼 모먼트에 Spring Cloud 기반의 MSA환경을 구성하여, API Gateway도 적용하였는데 1년 반 정도 운영한 경험을 공유할 예정입니다. 더불어 MSA 환경에서는 API Gateway를 통해 인증을 어떻게 처리하는지 알아보고 OAuth2 기반의 JWT Token을 이용한 인증에 대한 이야기도 함께 나눌 예정입니다.
HAProxy TCP 모드에서 클라이언트의 Source IP를 내부 서버로 전달하는 방법을 알아봅니다.
* 중간에 오타가 있어서 수정본을 다시 업로드 하고자 했으나... SlideShare 측의 답변으로는 "Re-Upload 기능을 제거했다."라고 합니다. 부디 오타 등 부자연스러운 부분에 대해 너그럽게 이해를 부탁 드립니다.
Observability in Java: Getting Started with OpenTelemetryDevOps.com
Our software is more complex than ever: applications must be reliable, predictable, and easy to use to meet modern expectations. As developers, this means our responsibilities have grown while the things we can control have stayed the same. In order to better understand our systems and create truly modern software, we need observability.
This workshop will walk through what observability means for Java developers and how to achieve it in our systems with the least amount of work using the open source observability project OpenTelemetry.
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
황민호(robin.hwang) / kakao corp. DSP개발파트
---
최근 Spring Cloud와 Netflix OSS로 MSA를 구성하는 시스템 기반의 서비스들이 많아지는 추세입니다.
카카오에서도 작년에 오픈한 광고 플랫폼 모먼트에 Spring Cloud 기반의 MSA환경을 구성하여, API Gateway도 적용하였는데 1년 반 정도 운영한 경험을 공유할 예정입니다. 더불어 MSA 환경에서는 API Gateway를 통해 인증을 어떻게 처리하는지 알아보고 OAuth2 기반의 JWT Token을 이용한 인증에 대한 이야기도 함께 나눌 예정입니다.
2018년 6월 24일 "백수들의 Conference"에서 발표한 개발자를 위한 (블로그) 글쓰기 intro입니다
좋은 글을 많이 보는 노하우 + 꾸준히 글을 작성하는 노하우에 대해 주로 이야기했습니다! (어떻게 글을 작성하는가는 없어요!)
피드백은 언제나 환영합니다 :)
This is a talk on how you can monitor your microservices architecture using Prometheus and Grafana. This has easy to execute steps to get a local monitoring stack running on your local machine using docker.
마이크로서비스 스타일로 만들어진 시스템을 모노리틱 스타일로 이관한 사례와 함께 스프링을 이용해 모듈형 모노리스(modular monoliths)를 만든 경험을 바탕으로 모노리틱/마이크로서비스 보다 본질적인 문제를 제기하고, 문제 해결을 위한 아이디어와 코드를 공유합니다.
https://github.com/arawn/building-modular-monoliths-using-spring
이 자료는 2019년 KSUG 세미나에서 진행한 "잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다"를 기반으로 몇가지 내용을 추가하고, 전개 방식을 다듬어 조금 더 친절하게 만들어졌습니다.
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Henning Jacobs
Kubernetes has the concept of resource requests and limits. Pods get scheduled on the nodes based on their requests and optionally limited in how much of the resource they can consume. Understanding and optimizing resource requests/limits is crucial both for reducing resource "slack" and ensuring application performance/low-latency. This talk shows our approach to monitoring and optimizing Kubernetes resources for 80+ clusters to achieve cost-efficiency and reducing impact for latency-critical applications. All shown tools are Open Source and can be applied to most Kubernetes deployments.
2018년 6월 24일 "백수들의 Conference"에서 발표한 개발자를 위한 (블로그) 글쓰기 intro입니다
좋은 글을 많이 보는 노하우 + 꾸준히 글을 작성하는 노하우에 대해 주로 이야기했습니다! (어떻게 글을 작성하는가는 없어요!)
피드백은 언제나 환영합니다 :)
This is a talk on how you can monitor your microservices architecture using Prometheus and Grafana. This has easy to execute steps to get a local monitoring stack running on your local machine using docker.
마이크로서비스 스타일로 만들어진 시스템을 모노리틱 스타일로 이관한 사례와 함께 스프링을 이용해 모듈형 모노리스(modular monoliths)를 만든 경험을 바탕으로 모노리틱/마이크로서비스 보다 본질적인 문제를 제기하고, 문제 해결을 위한 아이디어와 코드를 공유합니다.
https://github.com/arawn/building-modular-monoliths-using-spring
이 자료는 2019년 KSUG 세미나에서 진행한 "잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다"를 기반으로 몇가지 내용을 추가하고, 전개 방식을 다듬어 조금 더 친절하게 만들어졌습니다.
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Henning Jacobs
Kubernetes has the concept of resource requests and limits. Pods get scheduled on the nodes based on their requests and optionally limited in how much of the resource they can consume. Understanding and optimizing resource requests/limits is crucial both for reducing resource "slack" and ensuring application performance/low-latency. This talk shows our approach to monitoring and optimizing Kubernetes resources for 80+ clusters to achieve cost-efficiency and reducing impact for latency-critical applications. All shown tools are Open Source and can be applied to most Kubernetes deployments.
오픈소스 및 오픈소스 개발 방법론은 현대 프로그래밍 개발 및 생태계의 핵심이 되었습니다. 전세계 유수의 IT 기업들은 거의 모두 오픈소스를 사용하며, 자체 결과물을 오픈소스로 공개하고 있습니다. 지금과 같이 거대 기업들이 오픈소스를 본격적으로 도입하고 공개하기 시작한 역사는 아직 그리 오래되지 않았습니다. 이 세션에서는 특허 및 저작권, 오픈소스의 정의, 오픈소스 저작권에 대한 설명, 오픈소스 저작권의 종류와 함께 오픈소스를 둘러싼 여러 사건 및 변화에 대해 알아봅니다.
신종주(isaac.shin) / kakao corp.(멀티미디어처리파트)
---
Computer Vision 의 여러 영역 중 얼굴인식은 실생활에 가장 유용한 분야 중 하나입니다. 얼굴 인식도 딥러닝을 이용하면서 성능이 많이 향상되었습니다. 얼굴 인식 분야가 어떻게 발전되었고, 최근에는 어떤 연구가 진행 중인지 알아보겠습니다. 마지막으로 카카오에서 얼굴 인식 적용사례를 소개합니다.
김기도(olaf.kido) / kakao corp.(미래미디어파트)
---
사용자에게 알맞은 뉴스를 전달하기 위해서는 언론사에서 전달해주는 기본 정보 이외에도 컨텐츠의 다양한 특성을 파악하여 이를 사용자와 연결 짓는 것이 중요합니다. 다양한 특성 정보들 중에서 기사의 유형이나 핵심 주제 같은 것들은 컨텐츠 본문을 자연어 처리해서만 얻을 수 있기 때문에 분석하기가 매우 까다롭습니다. 본 발표에서는 Deep Learning 기술을 사용한 '뉴스 메타 태깅 시스템'의 개발 사례를 소개합니다. 이 사례를 통해 분석 모델 학습부터 운영 시스템 개발 과정에서의 고민과 Lessons Learned를 공유하도록 하겠습니다.
최규민(pi.314) / kakao corp.(추천팀)
---
발표의 시작은? Music Streaming 서비스인 멜론과 카카오미니에 적용된
Toros 음악 추천 시스템의 다양한 추천 모델과 이를 활용한 추천 레시피에 대한 이야기를 합니다.
그리고 마무리는? 음악 추천을 위해 40~100차원 벡터로 모델링 된 (CB/CF) Latent Feature들을
다양한 조합으로 Visualization(t-SNE)하고 눈으로 탐색해 가면서 재미난 특징을 찾아보고자 합니다.
"CB와 CF Feature 노래를 어떻게 표현했을까?”,
"Popular노래와 Rare 한 노래의 Feature는?”
“Feedback이 많은 유저와 적은 유저 차이는?”
“팬덤이 있는 유저들은 어떤 모양일까?"
황지수(mario.h) / kakao corp.
---
카카오 봇 플랫폼을 소개합니다. 카카오톡 플러스 친구에서 새롭게 등장하고 있는 챗봇, 그리고 카카오의 음성비서인 카카오미니. 이들의 공통점은 봇 플랫폼 기반으로 동작하고 있다는 것입니다. 이런 봇 플랫폼이 어떤 구조로 만들어져 있고, 어떤 과정으로 문제를 해결하면서 개발을 진행했는지 공유합니다. 또한, 카카오의 AI기술을 이용하여 쉽게 봇을 만들 수 있는 Kakao I Open Builder의 기능과 특징을 이야기합니다.
함태윤(erkas.c) / DAUM WEBTOON COMPANY
동영상이 포함된 pdf를 아래 링크에서 다운받아서, adobe reader에서 확인가능합니다.
https://mk.kakaocdn.net/dn/if-kakao/conf2018/Daum_Webtoons_UX.pdf
---
다음웹툰 안드로이드 앱에 적용된 UX(Animation, Transition, Custom View) 에 대한 소개와
단순히 현재 개발된 모습만이 아니라 그 과정을 같이 소개합니다.
부드럽고 자연스러우며 의미있는 그러면서 과하지 않은 UX를 고민하였고,
그에 따른 결과물로 다음웹툰 2.0 이 출시되었고, 출시 후 Transition, Animation 에 대한 좋은 피드백을 받았었습니다.
그래서 사용자 UX 적으로 어떤 고민들을 하였고, 어떻게 적용, 발전시켜 왔는지에 대해서 공유하도록 하겠습니다.
1. 디자인 시안 분석에서 시작되는 UX 구성 과정
2. 프로토타이핑 및 UX 구현, 튜닝 과정
3. 다음웹툰의 향후 UX 개발과정 공개
최양민(ringgo.choi), 이강인(kai.lee) / kakaogames
---
클래시로얄처럼 국가나 지역에 관계없이 글로벌 서비스를 제공하는 게임도 있고 모두의 마블이나 리니지 레볼루션처럼 각 국가별로 차별화하여 글로벌 서비스를 제공하는 게임도 있습니다. 다양한 형태로 글로벌 서비스를 제공하는 게임들을 하나의 서비스 플랫폼으로 수용하기 위해 고민했던 크고 작은 경험들을 공유합니다.
박이랑(bernard.park) / 카카오뱅크
---
카카오뱅크의 모바일앱은 어떻게 개발되었는지 그 험난한 비하인드 스토리에 대해 얘기하고, 기존 은행에 대한 불편한 점들을 어떻게 카카오뱅크만의 차별점으로 만들었는지에 대해 말해봅니다. 또한 현재는 어떻게 은행 앱을 운영/개발하고 있는지 카카오뱅크만의 노하우를 공개합니다.
고재성(jake.ko) / kakao corp.(포털 플랫폼 개발파트)
---
가장 먼저 Daum 서비스를 만나 볼 수 있는 첫 화면!
변화된 Daum 모바일 첫 화면 서비스를 소개합니다.
기존 시스템의 구성과 문제점부터 개선 과정을 통해 변화된 시스템 구성, 운영 노하우, 기술 스택에 대해서 공유합니다.
다양한 콘텐츠를 안정적으로 제공하기 위한 고민 과정, 우리가 생각하는 앞으로의 포털의 모습에 대해서 이야기해보려 합니다.
김태현
Sr. SW Engineer. (Blizzard Entertainment)
---
글로벌 게임서비스의 무정지, 무점검 서버 개발과 운영의 사례를 소개
1. 무정지 무점검을 위해 적용된 서버 개발 기술들의 소개
2. 무정지 무점검 운영을 위한 서버의 구성과 DevOps 운용 소개
이한욱(nate.act) / kakaopaycorp.
---
많은 사람들이 현행 공인인증서 제도의 문제점을 이야기하고 또 불편함을 호소하고 있습니다.
카카오페이가 그 불편함을 어떻게 해소하려고 하는지 소개하려 합니다.
"카카오페이 인증"이라 이름 붙인 서비스와 그 기반이 되는 PKI 기술의 개요를 알아보고, 블록체인 기술을 왜 그리고 어떻게 사용하고 있는지 주로 이야기할 예정입니다.
그리고 앞으로 블록체인 기술과 PKI가 어떻게 진화해 나갈지 기술 관점에서 그 가능성을 타진해보려 합니다.
Klaytn: Service-Oriented Enterprise-Grade Public Blockchain Platformif kakao
한재선(Jason.han) / Ground X
---
Ground X에서 개발하고 있는 퍼블릭 블록체인 플랫폼인 Klaytn에 대해 소개합니다. Klaytn은 대규모 사용자를 기반으로 하는 서비스를 블록체인 기반에서 실행시키는데 최적화된 플랫폼으로서, 기업 수준의 서비스 제공자가 믿고 사용할만한 기능과 거버넌스 등을 제공하는 것을 목표로 한다. 본 발표에서는 현재 블록체인 기술의 이슈를 살펴보고, Klaytn의 솔루션을 소개합니다. 특히 속도와 성능에서의 이슈뿐 아니라 사용자 경험의 개선이나 대규모 서비스를 실행하기 위한 플랫폼 기능들에 대해서도 살펴보고자 합니다.
공용준(Andrew.kong) / kakao corp.(cloud part)
---
오프소스 기반의 클라우드 플랫폼인 9rum을 소개합니다. 확장성 있는 클라우드와 컨테이너 기반 서비스를 위한 클라우드를 만들기 위해 어떤 기술들을 만들어 적용했고 어떤 과정을 거쳐 갔는지에 대해서 이야기합니다. 그리고 9rum 서비스가 카카오의 개발 문화에 어떻게 기여하는지 설명합니다.
고승범(peter.ko) / kakao corp.(인프라2팀)
---
카카오에서는 빅데이터 분석, 처리부터 모든 개발 플랫폼을 이어주는 솔루션으로 급부상한 카프카(kafka)를 전사 공용 서비스로 운영하고 있습니다. 전사 공용 카프카를 직접 운영하면서 경험한 트러블슈팅과 운영 노하우 등을 공유하고자 합니다. 특히 카프카를 처음 접하시는 분들이나 이미 사용 중이신 분들이 많이 궁금해하는 프로듀서와 컨슈머 사용 시의 주의점 등에 대해서도 설명합니다.
이일민 / Epril
---
스프링5에 도입된 웹플럭스와 리액티브 함수형 프로그래밍 기술에 대한 여러가지 테스트 기술을 살펴보고 이를 효과적으로 개발에 적용하는 방법을 설명합니다.
- 리액티브 함수형 프로그래밍과 테스트
- 웹플럭스를 이용하는 웹 테스트
- 스프링5 애플리케이션의 테스트 전략
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
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의 지적재산권과 라이선스
오픈소스 사용자는 라이선스를 준수해야 할 의무가 있습니다.
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은 사용제한을 할 수 없음
코드 공개 및 배포시 주의사항
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년 기준)
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
- 오픈소스 라이선스 가이드 문서 제공
- 오픈소스 라이선스 문의
- 사용한 오픈소스 라이선스 확인 (대상 : 국내 개인, 대학, 중소기업)