ICT 기업의오픈소스활용방안 전현준 SK 플래닛 genji7000@nate.com
Table of Contents I. Open Source를이용하는경우 - OSS 이용자관점의점검 Point - 공개소프트웨어 Governance 4단계 [1] OSS 사용현황파악 [2] OSS License 분석 [3] OSS 준법성검증 [4] Risk 수준별대응 II. 소스코드를공개하는경우 - OSS 기여자관점의점검 Point - 코드공개를위한사내 Process 수립 - Licensing 전략및특허와의관계조율 - OSS Community III. 결어
Ⅰ. Open Source 를이용하는경우
OSS 이용자관점의 6 가지점검 Point OSS(Open Source Software) 사용사실을어떻게 Detecting 할것인가? OSS 사용리스트를얼마나신뢰할수있는가? 외주개발사의 OSS 사용여부를어떻게 Control 할것인가? 해당 OSS License 가준수가능한라이선스인가? OSS 사용고지는어디에할것인가? GPL, EPL 등에의하여코드공개의무가발생하는경우어떻게처리할것인가?
공개 SW Governance 세부단계 Client 배포되는서비스나제품단위조사 1 OSS 사용현황파악 수동또는검증툴을활용한 OSS 점검 1 단계에서얻은라이선스목록과실제대비 2 OSS 라이선스분석 복수라이선스의양립가능성등판단 공개 SW Governance 3 OSS 준법성검증 OSS Compliance 에필요한 To-do List 정리 라이선스별요구사항의준수가능성점검 4 Risk 수준별적정대응 저작권고지의무 / 소스코드공개의무이행 라이선스교체, 프로그램재개발등제안
[ 제 1 단계 ] OSS 사용현황파악 OSS Knowledge DB 비교 Component, 실행파일내 OSS 사용현황표시 공개 OSS 검증툴 : CodeEye( 한국저작권위원회 ), Fossology, BinaryAnalysis 등 상용 OSS 검증툴 : Protex(Blackduck Software), Palamida, Potecode 등 NIPA 공개 SW 역량프라자 (www.oss.kr) 의공개 SW 라이선스검증서비스
[ 제 1 단계 ] OSS 사용현황파악 주의점 1 Check List 1 제시된 OSS 컴포넌트가실제사용되었는가? - 주석기재내용이잘못검출 개발부서와 OSS 검증부서간의협업을통해 OSS 목록에대한 Double-Check - 일정부분이상코드매칭된복수의라이브러리가존재하는경우, 담당자실수로컴포넌트를잘못선택하는사례존재 (Tcloud Subsonic Jlayer 정정 ) 2 OSS 중미사용 / 폐지된컴포넌트가검출되지않았는가? (Hoppin Android Shall We Walk Library 삭제 ) 3 출처가불명확한미검증파일이포함되어있지는않은가? - 외주개발의경우, History를잘아는담당자에게직접문의
[ 제 1 단계 ] OSS 사용현황파악 주의점 2 최종확인결과, 다른출처의 CharsetToolkt 클래스내에있는 i18n.io.charsettoolkit utility class 주석때문에발생한검출오류 OSS 고지문구에반영 I18N::Charset Library 검출 소스출처및라이선스사용사실없음
[ 제 2 단계 ] OSS 라이선스분석 Source of OSS Component Copyright Notice A Copy of MIT License
[ 제 2 단계 ] OSS 라이선스분석 주의점 1 Check List 1 제시된라이선스가해당 OSS 컴포넌트와매칭되는지직접확인하였는가? - Tcloud Subsonic = LGPL 임을확인하는과정에서 Subsonic = GPL 의문 오류발견 / 정정 2 제시된홈페이지가해당 OSS 출처를제대로나타내는가? - Inputstream Library Smart EncodingInputStream 정정 3 GPL과 MPL 등양립불가능한복수의라이선스가존재하지않는가?
[ 제 2 단계 ] OSS 라이선스분석 주의점 2 MediaInfo(Lib) License Version 1.1, 3 January 2010 OSS License 다양성이해 Copyright 2002-2011 MediaArea.net SARL. All rights reserved. Redistribution and use in source and binary forms, without modification, are permitted provided that the following conditions are met: 1.Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2.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. Redistribution and use in source and binary forms, with modification, are permitted provided that the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version is met. 기업의 Proprietary Product 에적합한 Dual License Option 은없는지꼼꼼하게체크할필요
[ 제 2 단계 ] OSS 라이선스의다양성이해필요 (1) 자유로운재배포 원시코드제공 파생저작물 저작자의소스코드원형유지 : 최초원시코드 & 패치 개인및단체에대한차별금지 사용분야에대한차별금지 http://opensource.org/ Apache, MIT 등총 71개라이선스가 OSI 인증을받음 라이선스의배포 특정제품에만유효한라이선스금지 다른소프트웨어를제한하는라이선스금지 라이선스의기술중립성
[ 제 2 단계 ] OSS 라이선스의다양성이해필요 (2)
[ 제 3 단계 ] OSS 준법성검증 OLIS OSS DB OSI OSS DB 기타 DB
[ 제 3 단계 ] OSS 준법성검증 - 주의점 OSS Compliance 를위한 To-do List 정리 1 저작권고지 2 라이선스사본첨부 3 소스코드공개의무 대체가능한 라이선스나프로그램존재여부확인 자체개발 / 코드공개 / 구매중선택
[ 제 4 단계 ] Risk 수준별적정대응 저작권고지 Text 고지방식 홈페이지링크방식 3 2 1 Check Point : Server-side 고지 or App 내고지
[ 제 4 단계 ] Risk 수준별적정대응 소스공개 https://developers.skplanetx.com/ 삼성전자 OSS 사이트 (http://opensource.samsung.com/) 등타사의모범사례참조
[ 제 4 단계 ] Risk 수준별적정대응 유료라이선스구매 외주개발사의납품소프트웨어에사전협의없이 GPL이포함된경우 1 외주개발사에 GPL Risk 존재를통보 2 외주개발사가원저작자로부터 non- GPL Commercial License 구매 / 재개발 3 필요한경우, Commercial License 구매시발주사에대한 Sub-license Option을포함시킬지여부도고려
[ 제 4 단계 ] Risk 수준별적정대응 외주개발사관련
[ 제 4 단계 ] Risk 수준별적정대응 외주개발 OSS 조항 < 외주개발계약서의 OSS 조항예시 > B 가납품하는제품내에오픈소스소프트웨어가포함된경우, B 는그오픈소스 소프트웨어의목록및 B 가각오픈소스소프트웨어에대해취득한라이선스 목록을늦어도최종검수일 2 주전까지 A 에게통보하여야한다. B는프로그램배포시소스코드의전부나일부를공개해야하는의무가발생하게되는오픈소스소프트웨어라이선스 ( 예컨대, GPL, AGPL 등을포함하나이에한하지않음 ) 를포함한제품을납품하여서는안된다. 다만, 그러한오픈소스소프트웨어라이선스를반드시포함해야하는사정이존재하는경우 B는 A와의사전협의및동의절차를거쳐야한다.
Ⅱ. 소스코드를공개하는경우
OSS 기여자관점의 6 가지점검 Point 소스코드공개를위한적절한사내 Process 가존재하는가? 공개하려는소스코드에타사의코드 ( 오픈소스포함 ) 가포함되진않았는가? 공개하려는소스코드에대하여어떤 OSS License 를선언할것인가? 공개하려는소스코드와연관된특허가존재하는가? Dual Licensing 을통한 Commercializing 전략은고려해보았는가? 해당오픈소스와관련된커뮤니티가존재하는가?
OSS Contribution 관련사내조직 ( 예시 ) 회계 기술기획 법무 특허 QA
코드공개 Process 수립에있어서의고려사항 공개하려는코드의가격및그에따른사내처분권한확인 예컨대전사회계 / 재무위임전결규정중어느영역에해당하는지점검 1 백만원이하 1 천만원이하 팀장실장본부장 C-level O 1 억원이하 O 1 억원초과 O 코드공개를발의하는부서결정 O 코드공개에따른대외적인이슈나 Risk Check 공개하려는코드의개발 History 검토및별도의 OSS 검증실시등
OSS License 선택은 Business Decision 라이선스의특징및의무사항 BSD Apache GPL2 GPL3 LGPL2 MPL CDDL CPL/EPL 복제. 배포. 수정의권한허여 배포시라이선스사본첨부 O 저작권고지사항또는 Attribution 고지사항유지 배포시소스코드제공의무 (Reciprocity) 와범위 조합저작물 (Larger Work) 작성및타라이선스배포허용 X X O* O* O** File File Module X X 수정시수정내용고지 X O 명시적특허라이선스의허여 X X X 라이선시가특허소송제기시라이선스종료 X X X 이름, 상표, 상호에대한사용제한 X X X X 보증의부인 책임의제한 *GPL : 수정및사용된파일, 라이브러리, Shared Memory 형태로결합된프로젝트 **LGPL : 수정및사용된파일형태로결합된프로젝트
특허와 OSS 문제를동시에고려 (1) 코드공개를고려하는프로젝트에자사특허가포함되어있는지확인 코드개발자와특허발명자가동일한경우 공개하려는코드의알고리즘이특허로이미출원되어있는지확인 명시적특허라이선스를허여하는 OSS License 선택시자사특허의무료이용도허락하게된다는점인식 코드공개로인한특허권행사의제한가능성을고려해야함
특허와 OSS 문제를동시에고려 (2) 특허출원을고려하는프로젝트에 OSS 가포함되어있는지확인 OSS를포함하는새로운알고리즘개발시 OSS와그외부분을명확히구분 특허청구범위의구성요소중적어도일부는 OSS 이외의부분을포함 OSS 이외의부분을통해구현할수있는 Technical Effect가무엇인지기재 OSS로서공개할계획이라면공개시점이전에특허출원완료 OSS로서공개할계획이라면굳이특허권확보에비용을쓸것인지검토 출원단계부터 OSS 의공지성, 특허보복조항등과충돌하지않도록주의
소스코드를공개하더라도유료라이선스판매가능 BSD/GPL 등으로소스코드공개 & Commercial License 판매
Non-commercial Use Only 형태로코드공개하는경우 스페인 Steema Software 홈페이지
Dual Licensing 통한오픈소스의유료사업화사례 GPL vs Commercial Dual Licensing 구조비교 X264 Commercial 유료 (Unit 당단가및제작대수고려 ) Application, Server, Cloud 타입으로다양한 Commercial Licensing Program 운영 End User, Client Product를 Target 으로만들어진라이선스 Standard Type 대비 Premium H.264 Encoding Option 선택가능소스코드수정시 X264 본사에보고 Standalone 불가 (Self-competing 문제 ) Disable-gpl 컴파일옵션제공제3자특허라이선스보장불가 X264 GPL 무료이용타입에따른구분없음이용분야의제한없음 Premium H.264 Encoding 기술포함여부미확인 ( 없을것으로추정됨 ) GPL 규정에따른 2차저작물고지 Standalone, Bundle 여부불문 Disable-gpl 컴파일옵션미제공좌동
오픈소스커뮤니티 116
GitHub
Ⅲ. 결어
기업의오픈소스활용방안 ( 종합 ) OSS COMPLIANCE 특허, Commercial 등 전략관점 사내역할과 책임의분배 OSS CONTRIBUTION
inspiring everyone on the planet, SK planet 감사합니다.