OSS (Open Source Software) Heeseung Jo
Understanding the difference between Freeware and OSS Freeware (Not Free Software) Free use and no pay Redistribution possible Source code use and edit impossible OSS (Maybe Free Software) Free use and no pay Redistribution possible Source code use and edit possible 3
The define of Open Source Software (OSS) Open-source software (OSS) is computer software that is available in source code form for which the source code and certain other rights normally reserved for copyright holders are provided under a software license that permits users to study, change, and improve the software. Open source licenses often meet the requirements of the Open Source Definition. Some open source software is available within the public domain. Open source software is very often developed in a public, collaborative manner. Open-source software is the most prominent example of open-source development and often compared to (technically defined) user-generated content or (legally defined) open content movements. The term open-source software originated as part of a marketing campaign for free software. A report by Standish Group states that adoption of open-source software models has resulted in savings of about $60?billion per year to consumers. (wikipedia.org) 4
The concepts of OSS Free Redistribution - 자유로운재배포 Source Code - 소스코드공개 Derived Works - 2차저작물허용 Integrity of The Author's Source Code - 저자의소스코드보전 No Discrimination Against Persons or Groups - 개인및단체에차별금지 No Discrimination Against Fields of Endeavor - 사용분야차별금지 Distribution of License - 라이선스배포 License Must Not Be Specific to a Product - 제품특정않기 License Must Not Restrict Other Software - 타SW 제한않기 License Must Be Technology-Neutral - 기술적중립 < Open Source Initiative, http://opensource.org/docs/osd > 5
OSS development models 15
Introduction to basic OSS License Structure of Software license 16
Introduction to basic OSS License License Free Redistribution Source Open 2nd Work redistributio n Source Code Modification restrictions Available Discriminati on Use Protection Free Use Exclusive SW Conjunction GPL X X X X OSS LGPL X X X BSD X X X X MPL X X X Shareware X X X X Non OSS Freeware X X X X X Commercial SW X X X X X 17
OSS Begin 1960 년대소프트웨어역사와같이함 처음에는소프트웨어는하드웨어제공시소스를포함해서무료로제공하였음 그러나 1980 년대상용소프트웨어등장이후리차드스톨만의자유 (Free) 소프트웨어표방으로부터 Open Source SW 가시작되었음 Free 는무료를의미하는것이아니라소프트웨어의자유를의미함 자유소프트웨어재단 (Free Software Foundation) 에의해상용소프트웨어를반대함 Linus Torvalds 에의해 Linux 가만들어지고자유소프트웨어가활성화그리고 OSI(Open Source Initiative) 를통해 Open Source Software 가정의 18
OSS Begin (1) 1960 ~ 1970 하드웨어판매가핵심 소프트웨어의코드는공유하는문화 FORTRAN, COBOL, Algol 1960 ~ 1970 유닉스 (UNIX) 탄생 1970 ~ 1980 70 년대초반벨연구소직원인켄톰슨, 데니스리치, 더글러스매클로리등이처음개발 AT&T 를비롯한여러회사들과버클리대학 (UC Berkeley) 등비영리단체들이개발한다양한버전 출처 : 오픈소스그리고기회 진성주 19
OSS Begin (2) 1980 ~ 1990 소프트웨어저작권에대한인지, 시작된상업용소프트웨어시대 빌게이츠 - 컴퓨터애호가들에게보내는공개편지 Open Letter to Hobbyists 1984 ~ 2000 자유소프트웨어의성행 - 리차드스톨먼, GNU 선언 1985 - GNU 선언문을발표 유닉스에대항한자유로운대안을만들기위한의지를말한것 Free Software 운동후자유소프트웨어재단 (FSF) 설립 출처 : 오픈소스그리고기회 진성주 20
OSS Begin (3) 리눅스토발즈 - 리눅스 (Linux) 탄생 리눅스 (Linux) 1991~ 리눅스는핀란드헬싱키대학의대학원생인, 리누스토발즈가취미로개발한커널 미닉스 (MINUX) LINUX(Linus s MINIX) 프릭스 (freax) LINUX 초기 1 만행 지금 (2016 년 ) 2 천 200 백만행으로 현재 200 여종류가넘는배포판이존재 (RedHat, debian, ununtu..) 1998 년 - OSI(Open Source Initiative) 오픈소스 : 1998 년 2 월 3 일에넷스케이프브라우저의코드 2000 ~ 2010 많은기업이오픈소스를사용함 구글, 아마존, 넷플릭스, 인텔출처 : 오픈소스그리고기회 진성주 21
OSS Begin (4) 현재는대세!! OS ( 리눅스, UNIX) 브라우져 ( 크롬, 파이어폭스, 사파리 ) 모바일 OS ( 안드로이드, 타이젠, 심비안, ios) 임베디드기기 백엔드서버소프트웨어 ( 웹서버, 데이터베이스, NoSQL ) 출처 : 오픈소스그리고기회 진성주 22
Open Source Software 발전추이 OS & Web Server OS: FreeBSD Linux - RedHat, SuSE, SULinux WS: Apache Apache HTTP Server Tomcat Servlet Engine JBoss J2EE Container MySQL Middleware WAS: JBOSS, Jonas, Geronimo DB: MySQL, PostgreSQL, Cloudscape, Ingres, SAPdb, BerkeleyDB, CUBRID Development Tool: Eclipse Stack Mgmt Tools: OpenPKG, Integration SASH: Spring, Axis, Struts, Hibernate Stack Management Apache HTTP Server SASH Tomcat Servlet Engine JBoss J2EE Container MySQL/PostgreSQL Applications BI: Pentaho BPM: JBPM, CMS: Alfresco LDAP: OpenLDAP ERP: Compiere CRM: SugarCRM, Compiere Healthcare: MedSphere Management: Nagio, OpenNMS Security Tool Stack Management BI BPM XenSecure CMS CRM Apache HTTP Server SASH Tomcat Servlet Engine JBoss J2EE Container MySQL/PostgreSQL LDAP Security Tool Linux Linux Linux Linux 출처 : 한국공개 SW 시장전망 -2009 년 (NIPA) 36
주요단체및 OSS 프로젝트
OSS Ecosystem 38
주요단체 지원그룹 Open Source Software related Association Free Software Foundation - 리처드스톨만에의해 1985 년만들어진비영리재단 - GNU 프로젝트운영및 Free SW 배포 / 관리단체 OSI (Open Source Initiative) - 오픈소스소프트웨어사용장려를위해만들어진단체 - 오픈소스소프트웨어정의및관련표준관리 SFLC (Software Freedom Law Center) - 자유소프트웨어 / 오픈소스소프트웨어의비영리개발자를위하여법률상담법률대리및관련서비스 - 에벤모글렌의장이 2005 년 2 월에 4 백만달러달러의초기자금으로오픈소스개발연구소를위하여설립 GPL Violation - 해럴드벨테에의해 2004 년만들어진비영리재단 - GPL 라이선스기반의저작권보호및소송지원단체 기타 OIN, FOSS 등 39
산업별 OSS 단체 XENIVI OSHERA 차량용인포테인먼트오픈소스플랫폼채택을목표로한단체 160 개회원사 ( 현대, BMW, 혼다등완성차업체포함 ) 가입 EHR(Electronic Health Record) 등의료용소프트웨어를오픈소스기반으로제공하기위한단체 OpenMAMA 미들웨어나벤더중립적인메시징 API 를구현하기위한단체 Allseen Alliance 퀄컴과 Linux Foundation 이사물인터넷용오픈플랫폼과표준을제정하기위한단체 Polarsys 에어버스등항공사와관련업체, 그리고 Eclipse Foundation 이안전과관련된산업장비에대한오픈소스기반개발을위해만든단체 Android Community 주요모바일운영체제인 Google Android 운영체제를지원하기위한단체 46
주요단체 코드검색및검증 Code Search site Koders Blackduck Software Palamida CodeFetch 47
주요단체 OpenStack 51
성공한 OSS 프로젝트 Linux GNU 에서관리하고있는오픈소스운영체제 X86 기반에서벗어나임베디드기기, 모바일등다양한하드웨어에포팅 데스크탑이나웹서버위주에서현재는클라우드, 빅데이터등의분야에서사실상의표준운영체제로자리잡음 모든안드로이드스마트폰단말 ( 한국 90.1%) 전세계슈퍼컴퓨터의 93.8%(2013 년 11 월기준 ) Google, Twitter, Facebook, Amazon 등 개발자 8,000 명, 회사 800 개, 1,500 만줄의코드 3~6 개월주기의커널업그레이드 Source: : Worldwide Linux Server Operation System Environment by Vendors, 2006-2010, March IDC 2011 52
성공한 OSS 프로젝트 MySQL(MariaDB) 전세계적으로가장많이사용되고있는오픈소스데이터베이스의하나 페이스북등거의대부분의웹서비스업체에서운영데이터저장용으로사용 현재는클러스터링, 분산 ( 샤딩 ), 복제및백업등엔터프라이즈환경에서필요로하는고급기능까지지원 오라클이인수 (10 억달러 ) 후 오픈코어전략 표방 오픈소스결과물의확장기능이나엔터프라이즈기능공개하지않고있음 이에반발한마이클몬티가막내딸이름을붙여 MariaDB 시작 Apache HTTP Server Apache 재단의대표프로젝트로전세계적으로가장많이사용 (46% 점유율 ) 하는웹서버 NCSA 의 HTTPd 코드를기반으로 Linux 에서사용할수있도록웹서버코드를재작성 커뮤니티그룹과미델라웨어사와합작하여 Apache Software Foundation 설립 (1999) 53
성공한 OSS 프로젝트 Hadoop 빅데이터분야의대표적인오픈소스프로젝트 거의모든빅데이터업체들이사용하고있는기반플랫폼 - ( 예 ) Hortonworks, Cloudera, MapR, IBM, Oracle 빅데이터관련소프트웨어들의생태계역할 - ( 예 ) Pig, Hive, HBase 모바일, 사물인터넷에기반한급속한데이터증가에따라더욱중요도증가 Openstack MongoDB 클라우드업체인 Rackspace 와 NASA 가협력하여만든오픈소스클라우드운영시스템 클라우드시스템구축에필요한컴퓨팅, 네트워크, 스토리지자원에대한가상화및운영관리는물론이고보안, 웍플로우등거의모든요구사항지원하는사실상의표준 클라우드업체는물론가상화, 하드웨어, 네트워크, 스토리지등다양한벤더들이참여중 기존 RDB 와는다른 NoSQL 기반의데이터베이스 빅데이터시대의도래와함께비정형데이터를대량으로처리할수있는장점부각 RDB 와유사한인터페이스, 폭넓은사용자저변, 높은성능으로 NoSQL 분야에서사실상의업계표준 54
성공한 OSS 프로젝트 Pentaho BI(Business Intelligence) 및데이터통합 (ETL 등 ) 분야의오픈소스강자 Hadoop 과 NoSQL 지원을통해빅데이터시장진입 자본유치와고객확보에도성공 PostgreSQL(Enterprise DB) MySQL(MariaDB) 과함께주요한오픈소스 RDB 프로젝트의하나 Enterprise DB 를통해상용화된버전제공 Oracle DB 와뛰어난호환성 Wordpress WSO2 오픈소스블로그플랫폼이자 WCM(Web Contents Management) 플랫폼 전세계웹사이트의 22%, WCM 시장의 60% 이상점유 Apache 라이선스기반으로한오픈소스미들웨어스위트 ESB, BPM, BRM, API Manager, CEP 등의컴포넌트 55
분야별 OSS 종류및활용사례
OSS 어디에??? 오픈소스소스저장소 (Repository) GitHub BitBucket Google Code Code Project SourceForge Naver nforge 오픈소스프로젝트찾기 http://www.findbestopensource.com https://www.openhub.net/ 57
Wikipedia: List of Open Source Software http://en.wikipedia.org/wiki/list_of_free_and_open_sour ce_software_packages - 모든오픈소스 SW 가있지는않지만, - 응용분야별로대표적인공개 SW 가나열 58
http://freeopensourcesoftware.org 59
https://www.openhub.net 60
Open Source 는 github 이갑! Github 이최근신규 ( 학생 ) 개발자유입을위한 Promotion 을시작함 https://education.github.com/pack 62
Open Source 활용전략 저비용마케팅으로써의오픈소스 코드를공개해지원비용절감 오픈소스로개발비용절감 코드를오픈소스로제공해경쟁자를압박 오픈소스를통해경쟁자로발돋움 오픈소스로경쟁을억제 오픈소스로협상 오픈소스로공유된표준수립 오픈소스로미래를통제 출처 : ' 탐욕도동력!' 돈벌어주는오픈소스의비밀 - 2013-10-13 ciokr@idg.co.kr 63
Open Source 활용전략상세 저비용마케팅으로써의오픈소스 오픈소스패키지로공개하면해당제품을사용할사용자들을끌어모을수있다 제품스스로가마케팅수단이되어사용자를끌어모으고고객에게제품을유료로판매할시점이되면판매인력이발생한다 코드를공개해지원비용절감 ' 문제가있는가? 여기코드가있다. 스스로확인해보라.' 잘정리된오픈소스소프트웨어는관련된모든사람들에게선물일수있다. 능력이있는고객들은지원기술자가코드를파헤치기를기다리기전에스스로자신의문제를해결할수있다. 오픈소스로개발비용절감 기업에게는툴또는라이브러리 (Library) 또는구성요소가필요하다. 자체개발에는상당한비용이소요된다. 만약소프트웨어가사업의핵심적인부분이아니라면개발비용을절감하면서도사회에너그러우며헌신적인이미지를심어줄수있다. 상황에따라기업들이오픈소스코드기반을위해서로힘을합쳐개발비용을분담하기도한다. 64
Open Source 활용전략상세 코드를오픈소스로제공해경쟁자를압박 구글이안드로이드 OS 를공개하여, 애플의아이폰을압박 오픈소스라이선스덕분에각기업은소스코드에접근하고통제력을갖게되면서동등한파트너로거듭날수있었다. 오픈스택 (OpenStack) 은랙스페이스 (Rackspace) 가후원하는프로젝트로소규모클라우드기업들이한데모여아마존의지배적인클라우드보다더욱매력적인보편화된플랫폼을제공할수있도록한다. 오픈소스를통해경쟁자로발돋움 오픈소스라이선스를통해경쟁을손쉽게시작할수있다. 일단다운로드해자신의디자인을추가하면첫날부터 ( 심지어몇분만에 ) 바로경쟁이시작되는것이다. 진정한전문가가되기위해서는수년이소요될수있다. 진정한경쟁이란진정한전문지식을제공할수있는팀을구성하는것이다. 오픈소스로경쟁을억제 새로운경쟁자가새로운것을발견한다하더라도, 기존의경쟁자들이모든것을얻을수있다. GPL 등의인기라이선스는모두가공평하게공유하도록강제하고있다. 이런공평한공유때문에신생기업이선두기업이되는데어려움이따른다. 신생기업으로부터의혁신을선두기업이흡수하기때문이다. 경쟁자로손쉽게발돋움할수있는규칙때문에경쟁이저해되는것이다. 65
Open Source 활용전략상세 오픈소스로협상 많은오픈소스라이선스가유연하긴하지만일부는점차엄격해지고있다. GPL 은오직소프트웨어를 " 배포 " 할경우에만공유를강제했다. 그리고일부개발자들은이요건을충족시키기쉽다고생각했다. 그들은단지실험을진행하거나무료서비스를제공할뿐이다. 최근 AGPL 은 NoSQL 데이터저장소등다양한신생프로젝트에인기를얻고있다. 몽고 DB(MongoDB) 의경우, 자체적인핵심툴인데이터베이스를위해이라이선스를도입했다. 오픈소스로공유된표준수립 모든기업및시장은고객들을위해무엇을기대할수있으며기업들이무엇을구축할지알수있도록일련의표준을마련해야한다. 오픈소스는종종이런상호운용성표준을수립하는데도움이된다. 오픈소스툴이이렇게발전하는표준의중심에서있는경우가종종있다. 예를들어, 모바일브라우저시장은대부분애플이개발했지만구글과다른기업들이도입한웹키트 (WebKit) 렌더링엔진을통해정의된다. 오픈소스로미래를통제 여러기업들이직원을고용해오픈소스프로젝트를진행하고있다. 때로는개발에막대한자금을투자한코드를기부하기도한다. 그들은해당코드기반이발전하는방식에영향을끼치고싶어하며, 가장손쉬운방법은코드를기부하는것이다. 66
OSS 라이선스특징및종류
License 개념분류 Permissive 사용함에있어서별다른요구사항을부여하지않고광범위한권한을부여 라이선스요구사항최소화 ( 라이선스 copy, notice 보전 ) Copyleft 소스코드가사용되어지게해야함. 라이선스는원래저작물과그에따른파생저작물에적용되어져야함. Free Software/ Opens Source Software? Free Opens Source Software? Give Me Credit BSD, MIT Give Me Fixes MPL, EPL, LGPL Give Me Everything GPL 68
Copyleft 요소기준 2 차적저작물의 source code 공개의무 (reciprocity) 여부및범위 + 2 차적저작물의배포시원본저작물의라이선스선택의무여부 강력 Copyleft 라이선스 : GPL 계열 + 기타 제한 Copyleft 라이선스 : MPL 계열 + 기타 非 Copyleft 라이선스 : BSD 계열 + 기타 선택적라이선스 특별규정라이선스 기타 2,000 여개 + 창작라이선스 < 기타자세한 OSS License 는별도교육이필요함 > 출처 : KOSS Law Center 69
License 정의자유 Copyleft 무료 복제, 설치, 운영, 수정, 배포의자유 공개되어있는소스코드 내부사용 외부판매 기존소스코드및라이브러리의재사용으로생산성향상 성숙한오픈소스커뮤니티의프로젝트적용으로품질보장 공개되어있는소스코드를통해알고리즘과로직을분석하고응용할수있어설계자, 개발자, 테스터의소프트웨어기술력증강 TCO(Total Cost Ownership) 절감 기술지원및유지보수서비스를기반으로사업가능 공개 SW 적극활용을위한거버넌스가필요함 ( 좋은공개 SW 공동사용 ) 반환의무 저작권 특정오픈소스라이선스의소스코드공개의무 저작권법에따른법적권리보장 GPL, LGPL, MPL, CPL, IBM, EPL, OSL, Qt 등이해당됨 연결된소프트웨어의소스코드공개의무가발생 비공개 SW 가오픈소스 SW 로변경될수있음 특허, 영업비밀, 핵심기술등의외부유출가능성존재 오픈소스라이선스미준수시저작자와분쟁가능 협력업체가저작권위반시협력업체가책임을지더라도최종적으로고객이동의하지않는소스코드공개등은당사의부담이됨 출처 : 블랙덕소프트웨어 70
OSS License 사용빈도 Top 20 71
OSS License 핵심의무사항 오픈소스소프트웨어에는다양한라이선스가존재함 개별 OSS 라이선스는사용과배포등에관련한다양한의무사항을요구함 라이선스의무사항 라이선스의무사항 사용권고지의의무 소스코드공개의의무 ( 일부 ) 누가해당소프트웨어를개발하였는지공지함 고객에게어떤 OSS 를사용하였는지알림 일부오픈소스라이선스는오픈소스로개발한결과물의소스코드공개를의무화하고있음 저작권고지의의무 특허포기의의무 ( 일부 ) 소스코드상에이미표시되어있는저작권관련문구는절대로삭제하여서는안됨 사용자가해당오픈소스를만든당사자에게특허침해소송을제기할수없음 72
OSS License 분류 소프트웨어 OSS SW 라이선스 비공개 SW 라이선스 비특허소프트웨어 특허소프트웨어 반환의무 (Reciprocal) 반환불필요 (Permissive) 특허조항제약무제약 공유가능소프트웨어 QT MPL OSL CPL IBM GPL2.0 LGPL2.0 Original BSD Apache MIT W3C Freeware Shareware GPL3.0 LGPL3.0 73
OSS License 소스공개범위 경우에따라해당 OSS 의소스코드만공개하거나 (case 1) 해당 OSS 의소스코드를수정또는추가한부분만공개하거나 (case 2) 또는해당 OSS 와링크가걸린부분까지 (case 3) 모두공개해야하는의무를명시하는경우가있음 2. 소스코드의추가및수정된부분 1. OSS 원본소스코드 링크 3. OSS 를링크하여이용하는경우 Case 1 : 1 만공개 case 2 : 1+2 를공개 case 3 : 1+2+3 모두공개 74
OSS License 소스공개범위 (GPL) 수정한내용에대한소스공개의무발생, SW 를수정하거나새로운 SW 를링크시키는경우하나의프로세스로동작하는전체프로그램의소스코드공개 ( 동일한실행파일에포함되는경우, 공유주소영역 (Shared address space) 에서링크되어실행되는경우 ) 소스코드를공개할필요가없는경우 - 정상적인리눅스 system call 을사용, Class Path Exception 인경우, 리눅스를기반으로개발된 Application, 커널모듈형태로작성된 Loadable Device Driver, 2 개의프로그램이파이프 (pipe), 소켓 (socket), command line arguments 형태로통신하는경우 GPL 라이선스공개의범위 - 녹색부분 Machine 1 Static Library Dynamic Library 메인프로그램 Main function or class Shared Memory 보조프로그램 2 Main function or class Static Library Dynamic Library Pipe 프로그램 3 RPC, RMI, SOAP, HTTP Machine 2 프로그램 4 프로그램 5 75
OSS License 소스공개방법 소스코드를 CD-ROM 등의매체에담아제품 (Object Code 또는 Executable File) 배포시함께제공하거나, 매뉴얼에소스코드를요청할수있는연락처기입 FTP 서버, 웹서버등에소스코드를업로드해놓고매뉴얼혹은별도의텍스트파일에해당주소를기입 최소 3 년동안사용자요청이있을경우에최소한의배포비용만받고소스코드를제공하겠다는문서 (Written Offer) 를제공후사용자의요청이있을경우제공 (e-mail, CD-ROM 등 ) GPL 2.0, GPL 3.0, LGPL 2.1, MPL, EPL 등이해당됨 76
OSS License 듀얼라이선스 MySQL Community Version & Commercial Version Community Version : GNU General Public License 2.0 Connector 역시 GPL 2.0 GPL 2.0 JDBC 4.0 이전버전은 LGPL 적용 커뮤니티버전을우리회사상용제품에패키징할경우 GPL 의무사항에따라상용제품의코드공개등 GPL 의무사항적용됨 77
OSS License 특허조항 (Patent) 특허권에대한비차별적이며무료사용이가능한권한허용 (Royalty Free) 라이선시가특허소송을제기하는경우라이선스종료 ( 특허보복조항 ) 제 3 자가소유한특허의취급에관한조항 78
OSS License 양립성 서로다른라이선스의조합일경우 - 서로다른 OSS 의라이선스의무조항이상충하는문제에따라이를해결할목적으로타라이선스의수용여부를명시하는조항 - 양립할수없는경우배포불가능 MPL(Mozilla public License) 다른소스코드와결합하여사용할경우 MPL 선언된소스코드만공개하고 MPL로선언함 + = GPL(General public License) 다른소스코드와결합하여사용할경우결합하는모든소스코드를공개해야하고 GPL로선언해야함 두라이선스의요구조건이서로달라서배포하는것이불가능 라이선스의양립성 (compatibility) 문제 타라이선스수용여부를먼저확인해야함 79
OSS License 공통의무사항 전세계 2,000 여종의 OSS 라이선스는공통적인의무사항의조합으로구성되어있음 라이선스의특징및의무사항 BSD Apache GPL2 GPL3 LGPL2 MPL CDDL CPL/ EPL 복제. 배포. 수정의권한허여 배포시라이선스사본첨부 저작권고지사항또는 Attribution 고지사항유지 배포시소스코드제공의무 (Reciprocity) 와범위 조합저작물 (Larger Work) 작성및타라이선스배포허용 * * * file file Module 수정시수정내용고지 명시적특허라이선스의허여 라이선시가특허소송제기시라이선스종료 이름, 상표, 상호에대한사용제한 보증의부인 책임의제한 *GPL : 수정및사용된파일, 라이브러리, Shared Memory 형태로 결합된 프로젝트 *LGPL : 수정및사용된파일형태로결합된프로젝트 80
상용 SW 개발관점에서의 OSS 라이선스컴플라이언스 (1) 출처 : 상용 SW 개발관점에서의 OSS 라이선스컴프라이언스공개 SW 역량프라자박준석수석 82
상용 SW 개발관점에서의 OSS 라이선스컴플라이언스 (2) 83
상용 SW 개발관점에서의 OSS 라이선스컴플라이언스 (3) 84
상용 SW 개발관점에서의 OSS 라이선스컴플라이언스 (4) 85