제 28 회 Open Technet, 안전한공개 SW 활용을위한공개 SW 라이선스역량강화 LG CNS 공개 SW 라이선스관리사례 LG CNS 주성식 lachesis@lgcns.com / liks79@gmail.com 2012-06-21 *.PPT 템플릿출처 : http://insahara.tistory.com
I. 공개 SW 라이선스에대한이해 II. III. IV. 공개 SW 라이선스관리방안 GPL 라이선스에대한관리정책 사내 FAQ 공유 2
1. 공개 SW 라이선스에대한이해 개요 공개 SW 커뮤니티의성숙과글로벌 IT 기업의참여로공개 SW 는새로운문제해결의장으로성장 공개 SW 의올바르고적극적인활용은새로운비즈니스로기회로연결됨 60 만개이상의공개 SW 프로젝트, 160 만개의버전 공개 SW 는집단지성의산물 2010 년 ~ 기술의역전현상 JAVA와리눅스진영의공개SW는화활발 공개SW 진영에서기술을선도함 공개 SW 의기본정신 참여, 공유, 개방 으로 WEB 2.0 도래 클라우드 / 모바일 / 빅데이터의시대 1990 년대 ~2000 년대인터넷의시대 1980 년대 : 공개 SW 는 GNU 와함께발전 서버 / 클라이언트시대 1970 년대 : 공개 SW 초창기 3
1. 공개 SW 라이선스에대한이해 OSI 의정의 OSI 는공개 SW 에해당하는라이선스의최소한의기준을정의 (Open Source Definition) http://www.opensource.org/ OSD (Open Source Definition) by OSI (Open Source Initiative) 1. Free Redistribution: 자유로운재배포 2. Source Code Open: 소스코드공개 3. Derived Works: 개작의허용 4. Integrity of The Author's Source Code: 저작자의소스코드원형유지 5. No Discrimination Against Persons or Groups: 개인 / 단체차별금지 6. No Discrimination Against Fields of Endeavor: 사용분야제한금지 7. Distribution of License: 공개SW 라이선스에의한권리는해당 SW를재배포받는모든사람에게그대로유지되어야함 8. License Must Not Be Specific to a Product: 특정제품에만사용하도록제한하면안됨 9. License Must Not Restrict Other Software: 다른 SW를같이사용하지못하도록제한하면안됨 10. License Must Be Technology-Neutral: 특정기술이나특정인터페이스에만국한되어사용되도록하면안됨 OSI 가인증한공개 SW 라이선스에는 OSI 의인증마크를부여 ( 현재 69 개의라이선스인증 ) http://www.opensource.org/licenses/alphabetical 4
1. 공개 SW 라이선스에대한이해 라이선스계층구조 공개 SW 라이선스는 2009 년기준 1720 여개이상의다양한라이선스존재 소스코드반환의의무여부를기준으로크게 Reciprocal / Permissive 라이선스로구분 공개 SW 라이선스 반환의무 (Reciprocal) 반환불필요 (Permissive) EPL QT MPL OSL CPL IBM GPL LGPL AGPL BSD Apache MIT W3C 라이선스분쟁발생시 저작권법상침해행위가일어난경우, 권리자는침해자에대하여침해예방청구, 침해금지청구, 손해배상의청구, 형사고소가능 저작권자의형사고소시, 형사상 5 년이하의징역또는 5 천만원이하의벌금 사용권고지의의무 누가해당소프트웨어를개발하였는지공지함 고객에게어떤 OSS 를사용하였는지알림 저작권고지의의무 소스코드공개의의무 일부오픈소스라이선스는오픈소스로개발한결과물의소스코드공개를의무화하고있음 특허포기의의무 저작권자의침해금지청구시, 제품배포금지가능 소스코드상에이미표시되어있는저작권관련문구는절대로삭제하여서는안됨 사용자가해당오픈소스를만든당사자에게특허침해소송을제기할수없음 5
1. 공개 SW 라이선스에대한이해 라이선스분포현황 Top 20 공개 SW 라이선스 Rank License % 1 GNU General Public License (GPL) 2.0 39.89% 2 MIT License 12.20% 3 GNU General Public License (GPL) 3.0 7.88% 4 Artistic License (Perl) 7.56% 5 BSD License 2.0 6.98% 6 Apache License 2.0 6.69% 7 GNU Lesser General Public License (LGPL) 2.1 6.35% 8 Code Project Open 1.02 License 1.87% 9 Microsoft Public License (Ms-PL) 1.76% Reciprocal License : 58.78% 10 GNU Lesser General Public License (LGPL) 3.0 1.45% 11 Mozilla Public License (MPL) 1.1 1.07% 12 Eclipse Public License (EPL) 0.91% 13 BSD Two Clause License 0.38% 14 Common Public License (CPL) 0.37% 15 zlib/libpng License 0.33% 16 Common Development and Distribution License (CDDL) 0.31% 17 Academic Free License 0.28% 18 Open Software License (OSL) 0.19% 19 Microsoft Reciprocal License (Ms-RL) 0.19% 20 Ruby License 0.17% http://osrc.blackducksoftware.com/data/licenses/ 2012.06.18 Daily Report Permissive License : 38.05% 6
1. 공개 SW 라이선스에대한이해 LG CNS 현황 2011 년 LG CNS 공개 SW 라이선스검증결과라이선스분포현황 60.40% 0.80% 23.40% 0.20% AGPL GPL CC-A-SA LGPL EPL/IBM/MPL APACHE/BSD/MIT 7.90% 7.40% *.AGPL,GPL, LGPL 등의 Reciprocal License 는 SW 가릴리즈되기전에다른공개 SW 로대체하거나제거함 7
2. 공개 SW 라이선스관리방안 필요성 일반적으로 IT 서비스업체의 SI 사업에서는고객에게소스코드를제공하지만다양한변수존재 최근 IT 서비스업체의대내외환경을고려할때, IT 서비스업체도공개 SW 라이선스를관리해야할필요가있음 공공프로젝트에서 RFP 에공개 SW 라이선스관리에대한요구사항이포함되는경우가있음 à 공개 SW 라이선스관리체계없이는입찰이불가능 사업유형다양화로임베디드소프트웨어를개발하는경우 à 궁극적으로다수에게배포 생산성향상 / 타사와의차별화를목적으로한소프트웨어모듈또는제품의자산화 à 고객에게소스코드를전달하지않음 해외사업진출활성화노력 à 공개 SW 라이선스에대한인식이상대적으로높을수있음 고객에게판매한상용소프트웨어가공개 SW 라이선스를오용했을가능성 à 직접적인법적책임은해당소프트웨어업체에있겠지만, 고객에게피해 8
2. 공개 SW 라이선스관리방안 정책과규정확립 공개 SW 에대한추적성확보와라이선스리스크예방, 지식자산화를위하여공식적인원칙과규정이필요함 공개 SW 에대한전사원칙과규정을만들어선언하고관련조직을정한다. 공개 SW 사용원칙 ( 예시 ) 공개 SW 사용규정 ( 예시 ) 공개 SW 를사용하는모든 SW 개발프로젝트는공개 SW 라이선스를준수할의무와책임이있다. 구분 1 규정사항 모든개발프로젝트는 SW 개발공정에서간단계마다공개 SW 라이선스를확인하고점검한다. 공개 SW 라이선스의오용으로인한지적재산권리스크예방을위하여전사규정을준수하여야한다. 필수 2 3 시스템 OSS(OS,DBMS,MW) 는라이센스 / 상표권을확인하고도입한다. 시스템 OSS 도입시유지보수업체가있는소프트웨어를선택하고유지보수계약을체결한다. 공개 SW 라이선스를준수원칙하여공개 SW 사용율을극대화한다. 4 공개 SW 의도입시에는해당 SW 에대한경험을지식자산화하여지식시스템에등록한다 모든개발자와관리자는공개 SW 라이선스교육을이수하여야한다. 권장 5 6 시스템 OSS 는처리용량이적고업무중요도가낮은시스템위주로도입한다. S/W 공학도구 OSS 활용시가이드를참고하여선택한다. 9
2. 공개 SW 라이선스관리방안 리스크시나리오 공개 SW 라이선스가오용된상태에서, 소스코드가고객에게전달되는가여부와실행파일이고객사이외의제 3 자에게전달되는가여부에따라각각리스크가존재함 소스코드고객전달 실행파일제 3 자전달 위험라이선스위험사항 O O GPL, AGPL 최종고객요구시소스코드공개 à 고객사핵심기술노출 à IT 서비스업체신뢰도저하 O X 고객사외부사용자 + AGPL X O GPL, AGPL 외부사용자요구시소스코드공개 à 고객사영업비밀노출 à IT 서비스업체신뢰도저하 고객사 / 최종고객요구시소스코드공개 à IT 서비스업체핵심기술노출 실행파일을배포받은사람은소스코드는물론실행파일을임의로판매및배포가능 의도하지않았던공개SW 화에따른리스크 X X GPL, AGPL 고객사요구시소스코드공개 à IT 서비스업체핵심기술노출 공통적으로저작권위반시 저작권자의손해배상의청구가능 저작권자의형사고소시, 형사상 5 년이하의징역또는 5 천만원이하의벌금 저작권자의침해금지청구시, 제품배포금지가능 저작권위반에따른처벌및리스크 10
2. 공개 SW 라이선스관리방안 대상기준 Affero GPL 을제외한일반적인공개 SW 라이선스의무사항은 SW 를배포할때발생함 Affero GPL 의경우네트워크를통한서비스제공에대해서도배포로인정 일반적기준자사기준 ( 필수진단대상 ) 업체소유인 SW 를배포하는경우 LG CNS 솔루션, 패키지 SW, 기타 SW 자산 업체가배포한 SW 를고객이다시배포 ( 재배포 ) 하는경우 - 동일한 SW 를관계사, 협력사, 파트너등외부로배포하는경우 고객사의사외배포용 S/W 개발프로젝트 ( 예 : 고객사가판매하는제품에포함되는경우 ) SW 유지보수업체를변경하는경우 ( 무단재배포의위험 ) 업체가개발한 SW 를사용자가웹기반으로제 3 자에게정보서비스를제공하는경우 - 내부임직원이아닌외부고객에게웹기반의정보서비스를제공하는경우 (Affero GPL 의소스코드공개의무 ) 고객사의사외사용자용시스템개발프로젝트 ( 예 : SI 사업중대국민서비스, B2C, B2B 사이트 ) 배포 : 저작물의원작품또는그복제물을일반공중에게양도또는대여하는행위 배포의예 : 납품, 설치, 번들, 배달, 전송 재배포 : 배포한 SW 를다시배포함 11
2. 공개 SW 라이선스관리방안 SW 개발공정별 TASK 사내 SW 개발방법론에공개 SW 라이선스점검절차를포함하여라이선스를준수하도록함 SW 개발공정에따른공개 SW 라이선스관리 개발프로젝트 전사지원조직 착수 분석 / 설계 오픈소스라이선스담당자선정 공개 SW 라이선스가이드제공 개발자및관리자대상공개 SW 라이선스교육 사용할오픈소스목록작성 / 관리 현장교육 / 집합교육 / 온라인교육 / 공개 SW 가이드제공 개발자대상공개 SW 라이선스교육 현장검증 / 담당자파견검증 점검결과지식화작업 개발 1 차점검 오픈소스목록전달 소스코드전달 조치사항반영 1 차점검 점검환경구축 Report 작성 점검툴사용소스코드분석 결과검토 정보공유를위한지식관리시스템운영 빌드 / 테스트 2 차점검 오픈소스목록전달 소스코드전달 2 차점검 점검환경구축 점검툴사용소스코드분석 라이선스점검시스템 조치사항반영 Report 작성 결과검토 ( 필요시 ) 소스코드공개및오픈소스사용여부명시 12
2. 공개 SW 라이선스관리방안 프로세스 SW 개발공정각단계에적용된공개 SW 라이선스관리방법론에기반한관리 공개 SW 라이선스를점검결과의메타데이터를정리하여사내 KM 시스템을통해지식화 착수단계 분석 / 설계단계 개발단계 빌드 / 테스트단계 인수인계단계 ( 제품화단계 ) 프로젝트내에공개 SW 담당자를선정 담당자는프로젝트에사용될공개 SW 목록의작성및관리 개발단계에서포함시킬공개 SW 모듈을선정. 선정된공개 SW 모듈에대해서라이선스를확인. 서로다른라이선스를조합할경우조합이가능한지확인 최종적으로개발될소프트웨어의소스코드공개가필요할경우사전에고객승인을득한다. 사용될공개 SW 목록관리 공개 SW 에포함되어있는저작권관련문구를유지 출처가불분명한소스코드는포함시키지않는다. 개발단계에서추가적으로포함시키고자하는공개 SW 는사내지식시스템이나공개 SW 라이선스담당자와협의하여포함여부를결정 최종적으로사용된공개 SW 목록을갱신한다. 필요시공개 SW 라이선스점검툴을통해라이선스를점검한다. 점검결과에따라필요한조치를취한다. ( 소스코드의변경, 최종제품의라이선스변경등 ) 공개 SW 사용여부를명시한다. ( 필요시소스코드를공개 ) 13
2. 공개 SW 라이선스관리방안 공통적준수사항 Reciprocal / Permissive 라이선스모두아래와같은사항을공통적으로요구하고있음 저작권관련문구유지 오픈소스 SW 는거의대부분소스코드상단에개발자정보와연락처등이기록되어있으며이정보는저작권의보호를받기때문에개발자정보를임의로수정하거나삭제하여서는안된다. 특히 GPL 등수정된결과물을다시공개하도록규정하고있는 ' 상호주의 (reciprocal)' 라이선스들의경우만약소스코드상에개발자정보가수정, 삭제된채로외부에소스코드를공개했다가그사실이밝혀질경우저작권침해문제가발생할수있으므로주의해야한다. 저작권관련문구유지는쉽게판단이가능한사항이므로항상준수하여야한다. 제품명중복방지 SW 의제품명은상표권으로보호받는다. 따라서오픈소스 SW 의경우에도이와동일한이름을제품명이나서비스명으로사용하면상표권침해의문제가생기게된다. 특히유명한오픈소스 SW 일수록해당오픈소스 SW 의이름이상표로서등록되어있는경우가많기때문에 ( 예 : 리눅스 ) 더욱조심해야한다. 서로다른라이선스의조합 SW 를작성하고자할경우기존에만들어진코드를재사용하거나결합하는경우가많은데, 이러한경우결합되는각코드의라이선스가서로상충되는경우가있다. 이러한문제를라이선스의양립성 (Compatibility) 문제라고한다. 따라서서로다른라이선스로배포된오픈소스 SW 를결합하는경우반드시두개의라이선스가서로호환되는지를확인하여야한다. 14
2. 공개 SW 라이선스관리방안 프로세스 SW 개발공정각단계에적용된공개 SW 라이선스관리방법론에기반한관리 공개 SW 라이선스를점검결과의메타데이터를정리하여사내 KM 시스템을통해지식화 공개 SW 라이선스관리개념도 PM 및아키텍트 어플리케이션설계자 어플리케이션개발자 가이드참조등록모듈참조사내 KM시스템 공개 SW 라이선스담당자 공개 SW 라이선스가이드 사내공개 SW 모듈리포지토리 소스코드라이선스점검 공개 SW 라이선스점검시스템 검증된안전한공개 SW 모듈등록 조치방안판단내역 전세계공개 SW 소스코드 15
3.GPL 라이선스에대한관리정책 GRAY ZONE GPL 계열의라이선스는가장강력한 Copyleft 라이선스로관리가어려움 GPL 의해석은예외사항의케이스와범위에대하여독자적인판단이어려움 GPL 은최종사용자의 SW 에대한권리보호와함께오픈소스진영의영역을보호한다 대표적인 Reciprocal 라이선스 GPL 을소스코드및바이너리를포함하여제작된 2 차적저작물은 GPL 을준수해야함 GPL 소스코드를사용하는것은 GPL에동의하는것임 바이너리를배포받은사람은소스코드에대한변경및재배포권한이있음 GPL 소스코드를사용한 2 차적저작물도 GPL 이됨 강력한 copyleft 정책으로인해기업에서적극도입하기어려운라이선스임 16
3.GPL 라이선스에대한관리정책 GRAY ZONE GPL gray zone (Unclear area) GPL 소프트웨어를사용함에있어서의무사항을준수하고있는지위반하고있는지확실하지않은상황 어떻게해결할것인가?! GPL 의강력한 copyleft 정책과의무사항예외조건의사이에서발생 ü Linux Kernel Module 은개발하기에따라해당결과물이 GPL 일수도있고, 아닐수도있다. ü JVM 에서의동적라이브러리링크 ü MySQL connector/j 를독점소프트웨어와함께사용하려면? GPL 준수를위해의무사항준수를요구받는범위의문제 ü 2 차적저작물의범위는어디까지인가? GPL 코드중일부에서저작권자가불명확한경우 ü GPL 로배포되고있지만, 특정부분에서는 GPL 로배포되고있는 SW 의 original code 가아닌경우 GPL 소프트웨어를 rewrite 하여재구현했을경우 GPL 소프트웨어와독점소프트웨어를 Socket, pipe 등을이용해통합하였을경우 17
3.GPL 라이선스에대한관리정책 GRAY ZONE GPL 공개 SW 에대한관리방안 ( 예시 ) GPL 에대한판단이애매함으로리스크에서벗어나기위해서는최대한보수적으로해석하는것을권장함 구분 (GPL S/W) 사용허락 독립실행형 (System SW) Ex) Linux, Cubrid, MySQL, MongoDB 사내시스템 OS, WAS, M/W, DBMS 외부배포용 사용가능 상표권확인 기타권리사항확인후사용 사내시스템 사용가능 라이브러리 / 컴포넌트 Ex) Ext-JS, itext.jar, DHTMLX 외부배포용 사용불가 18
4. 사내 FAQ 공유 (1) Q : Mobile App 의경우 LEGAL NOTICE 를어떻게고지하나요? A : APP 의메뉴중에 LEGAL NOTICE 내용을포함하시면됩니다. 19
4. 사내 FAQ 공유 (2) Q : GPL 계열외에도일부를가져다사용할때전체소스코드를공개해야하는라이선스가있나요? A : Yes 20
4. 사내 FAQ 공유 (3) Q : In AGPLv3, what counts as interacting with [the software] remotely through a computer network? If the program is expressly designed to accept user requests and send responses over a network, then it meets these criteria. Common examples of programs that would fall into this category include web and mail servers, interactive web-based applications, and servers for games that are played online. If a program is not expressly designed to interact with a user through a network, but is being run in an environment where it happens to do so, then it does not fall into this category. For example, an application is not required to provide source merely because the user is running it over SSH, or a remote X session. (http://www.gnu.org/licenses/gpl-faq.html) 21
4. 사내 FAQ 공유 (4) Q : GPL 로배포되는 ( 혹은 MPL, EPL.. 등..) 소프트웨어의일부혹은전체를다른랭귀지로구현하여사용했을경우라이선스의문제가어떻게발생할지궁금합니다. o 귀하께서질문하신특정라이선스의오픈소스 SW 를다른언어로구현하였을경우저작권이슈에대하여, o 국내의경우, SW 는 2009 년 7 월 컴퓨터프로그램보호법 이폐지되었지만저작권법에 " 제 5 장의 2 프로그램에관한특례 " 가신설 (2009.4.22) 되어여전히프로그램저작물로써보호를받고있습니다. - 저작권이란창작물 ( 저작물 ) 의창작자가취득하는권리로서창작물의아이디어를보호하는것이아니라그표현 (Expression) 의결과물을보호하는것입니다. - 따라서컴퓨터프로그램저작물은해당소스코드를통한표현그자체를보호하고있습니다. o 일반적으로原컴퓨터프로그램저작물을다른프로그램언어로변환하여개발하면저작권법제5조의번역에의한방법으로작성한창작물 (2차적저작물) 에해당되며독자적인저작물로서보호됩니다. - 다만, 다른프로그램언어로의구현과정에서그언어의특성및기능등을최대로살려창작성을추가하여야합니다. - 반면에原컴퓨터프로그램저작물에창작성을더하지아니하고기계적이고형식적으로단순하게다른프로그램언어로변환한경우, 해당저작물은 2차적저작물로서인정되지않습니다. - 따라서새로운기능이추가되어창작성이인정되거나창작성이인정될수있는특수한언어로의변환이없는한새로운저작물로인정되지않으므로原컴퓨터프로그램저작물저작권자의권리를침해할수있습니다. o 특정라이선스의오픈소스 SW 를다른언어로구현하였을경우에도위와같이적용되며창작적표현, 즉상당한새로운기능의추가가아닌단순한포팅수준이라면 2 차적저작물로서인정되지않습니다. - 그리고오픈소스 SW 는原저작권자가사용자에게사용과배포는물론, 프로그램의구조를나타내는소스코드를함께공개해두어사용자가이를자유롭게복제및수정한후재배포하는것까지허용하므로포팅등의행위는직접적인저작권침해에해당되지않습니다. - 하지만, 재배포시 GPL 등해당오픈소스 SW 라이선스의사용방법및조건의범위를준수하지않는다면라이선스를위반함과동시에저작권침해에해당될수있습니다. 참고로저작권법의프로그램관련조항을보면, 제 101 조 2( 보호의대상 ) 에 프로그램을작성하기위하여사용하는다음각호의사항에는이법을적용하지아니한다. 라고명시되어있으며, 여기에는 프로그램언어, 해법, 규약 등이포함됩니다. ` 1. 프로그램언어 : 프로그램을표현하는수단으로서문자ㆍ기호및그체계 2. 규약 : 특정한프로그램에서프로그램언어의용법에관한특별한약속 3. 해법 : 프로그램에서지시ㆍ명령의조합방법 22
Thank you!! *.PPT 템플릿출처 : http://insahara.tistory.com 23