KR101766859B1 - 특징점 기반의 오픈소스 라이선스 간 충돌 검사 방법 - Google Patents

특징점 기반의 오픈소스 라이선스 간 충돌 검사 방법 Download PDF

Info

Publication number
KR101766859B1
KR101766859B1 KR1020160084786A KR20160084786A KR101766859B1 KR 101766859 B1 KR101766859 B1 KR 101766859B1 KR 1020160084786 A KR1020160084786 A KR 1020160084786A KR 20160084786 A KR20160084786 A KR 20160084786A KR 101766859 B1 KR101766859 B1 KR 101766859B1
Authority
KR
South Korea
Prior art keywords
license
minutiae
conflict
computer
profile
Prior art date
Application number
KR1020160084786A
Other languages
English (en)
Inventor
김민수
조용준
신동명
연지영
Original Assignee
엘에스웨어(주)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘에스웨어(주) filed Critical 엘에스웨어(주)
Priority to KR1020160084786A priority Critical patent/KR101766859B1/ko
Priority to JP2019520340A priority patent/JP6681519B2/ja
Priority to PCT/KR2016/012980 priority patent/WO2018008810A1/ko
Application granted granted Critical
Publication of KR101766859B1 publication Critical patent/KR101766859B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

본 발명에 따른 오픈소스 라이선스 간 충돌 검사 방법은, (a) 주어진 제1 라이선스에 대하여 각 특징점에 대한 표현값을 입력받고, 주어진 제2 라이선스에 대하여 각 특징점에 대한 표현값을 입력받는 단계; 및 (b) 상기 제1 라이선스의 각 특징점에 대한 표현값과 상기 제2 라이선스의 각 특징점에 대한 표현값을 이용하여 상기 제1 라이선스와 상기 제2 라이선스의 충돌 여부를 판단하는 단계를 포함하는 것을 특징으로 한다.

Description

특징점 기반의 오픈소스 라이선스 간 충돌 검사 방법{Method for checking incompatibilities between open source licenses based on feature points}
본 발명은 오픈소스 라이선스 간 충돌 검사 방법에 관한 것으로, 보다 상세하게는 특징점을 기반으로 오픈소스 라이선스 간의 충돌을 검사하는 방법에 관한 것이다.
셋탑박스나 보안장비 등의 개발시 오픈소스 형태의 임베디드 소프트웨어들이 활용되고 있지만, 오픈소스 라이선스에 대한 명확한 이해가 부족하여 법적 소송에 휘말리는 경우가 종종 있다.
특히 오픈소스를 2개 이상 동시에 활용하거나, 원하는 라이선스로 변경하여 배포하고자 하는 경우 라이선스 간의 충돌 문제가 발생할 수 있으며, 충돌 발생시 해당 오픈소스를 사용할 수 없게 된다.
2개 이상의 라이선스가 공종하는 경우, 충돌 여부를 검사하기 위해서는 법률적 해석이 필요하며, 현재 법률전문가가 라이선스 조항 전체(Full text)를 상호 비교하여 검토하고 있다.
오픈소스 라이선스는 매우 다양하게 존재하며, OSI(Open Source Initiative)에서 공식 인증한 라이선스 종류는 현재 78개, SPDX(Software Package Data Exchange) 그룹에서 사용하고 있는 라이선스 종류는 120개 이상이 존재한다.
따라서, 많은 수의 오픈소스 라이선스 조항 전체를 매번 해석하고 비교 검토하기에는 많은 어려움이 있으며, 개발자가 원하는 최적의 라이선스를 추천해 주기 어렵다.
박준석. ‘오픈 소스 소프트웨어 라이선스 충돌의 구조적 해결을 위한 관리 프레임워크의 개발 및 적용 전략에 관한 연구’. 상명대학교 대학원 박사학위 논문, 2015. 2.
본 발명이 이루고자 하는 기술적 과제는 오픈소스 라이선스 간의 충돌 검사를 자동화할 수 있는 방법을 제공하는 데 있다.
상기 기술적 과제를 해결하기 위한 본 발명에 따른 오픈소스 라이선스 간 충돌 검사 방법은, (a) 주어진 제1 라이선스에 대하여 각 특징점에 대한 표현값을 입력받고, 주어진 제2 라이선스에 대하여 각 특징점에 대한 표현값을 입력받는 단계; 및 (b) 상기 제1 라이선스의 각 특징점에 대한 표현값과 상기 제2 라이선스의 각 특징점에 대한 표현값을 이용하여 상기 제1 라이선스와 상기 제2 라이선스의 충돌 여부를 판단하는 단계를 포함하는 것을 특징으로 한다.
상기 (b) 단계는, (b1) 상기 제2 라이선스에 대하여, 특징점 및 표현값으로 정의되는 특징점 프로파일의 집합인 프로파일 셋을 정의하는 단계; (b2) 상기 제1 라이선스의 각 특징점의 표현값에 기초하여, 각 특징점에 대하여 임의의 라이선스의 어떤 특징점이 어떤 표현값을 가지는 경우 상기 제1 라이선스의 해당 특징점과 충돌하는지를 나타내는 충돌 프로파일 셋 및 상기 충돌 프로파일 셋의 리스트를 정의하는 단계; 및 (b3) 상기 충돌 프로파일 셋의 리스트에 포함된 각 충돌 프로파일 셋과 상기 제2 라이선스의 프로파일 셋을 비교하여 상기 제1 라이선스와 상기 제2 라이선스의 충돌 여부를 판단하는 단계를 포함할 수 있다.
상기 (b3) 단계는, 상기 충돌 프로파일 셋의 리스트에 포함된 어떤 충돌 프로파일 셋이 상기 제2 라이선스의 프로파일 셋에 속하는 경우 상기 제1 라이선스와 상기 제2 라이선스가 충돌하는 것으로 판단할 수 있다.
상기 충돌 검사 방법은, 상기 (b) 단계에서 상기 제1 라이선스와 상기 제2 라이선스가 충돌하는 것으로 판단되는 경우, 상기 제2 라이선스에는 포함되지 않고 상기 제1 라이선스에만 포함되는 특징점이 존재하고, 상기 제2 라이선스가 선택 조항을 가지며, 상기 제1 라이선스에만 포함되는 특징점이 모두 상기 제2 라이선스의 선택 조항에 포함되면, 상기 제2 라이선스 대신에 상기 제2 라이선스에 상기 제1 라이선스에만 포함되는 특징점에 해당하는 선택 조항을 추가한 라이선스를 대상으로, 상기 (a) 및 (b) 단계를 수행하는 단계를 더 포함할 수 있다.
상기 충돌 검사 방법은, 상기 (b) 단계에서 상기 제1 라이선스와 상기 제2 라이선스가 충돌하는 것으로 판단되는 경우, 상기 제1 라이선스가 상기 제1 라이선스 이외의 다른 라이선스로의 변환을 허용하면, 상기 제1 라이선스 대신에 상기 다른 라이선스를 대상으로, 상기 (a) 및 (b) 단계를 수행하는 단계를 더 포함할 수 있다.
상기 기술적 과제를 해결하기 위하여 상기된 본 발명에 따른 오픈소스 라이선스 간 충돌 검사 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
상기된 본 발명에 의하면, 오픈소스 라이선스 간의 충돌 검사를 자동화할 수 있다.
도 1은 본 발명의 일 실시예에 따른 라이선스 간 충돌 검사 방법의 흐름도를 나타낸다.
도 2 및 3은 본 발명의 다른 일 실시예에 따른 라이선스 간 충돌 검사 방법의 흐름도를 나타낸다.
도 4는 본 발명의 실시예에 따라 충돌 검사를 수행한 결과의 라이선스 호환성 매트릭스를 나타낸다.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 이하 설명 및 첨부된 도면들에서 실질적으로 동일한 구성요소들은 각각 동일한 부호들로 나타냄으로써 중복 설명을 생략하기로 한다. 또한 본 발명을 설명함에 있어 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략하기로 한다.
본 명세서에서는 다음과 같이 용어를 정의하기로 한다. 다만, 이러한 정의는 개별 라이선스에서는 이와 다르게 재정의될 수 있다.
라이선스 : 라이선스는 그것이 적용된 저작물의 사용자가 지켜야 할 사항이 명시된 계약서이다.
배포자(Licensor, Distributor) : 원 저작물의 배포자.
사용자(Licensee, Recipient) : 배포된 임의의 저작물을 사용하는 자.
사용 라이선스 : (원 저작물의) 배포자가 사용자가 받은 저작물에 적용한 라이선스.
재배포 : 재배포란, 저작물의 사용자가 그 저작물을 ⅰ) 그대로, 혹은 ⅱ) 수정하여(modified work) 또는 ⅲ) 일부로서 사용한 저작물(파생 저작물, derivative works)을 배포하는 것. 재배포되는 저작물을 재배포물이라 한다.
배포 라이선스 : 사용자가 재배포물을 배포할 때, 사용자가 재배포물에 적용한 라이선스.
변환(Relicense) : 적용되어 있는 임의의 라이선스 대신 다른(정해진) 라이선스를 새로 적용하는 것.
선택 조항(Optional Clause) : 라이선스의 기본 상태에서는 비활성화되어 있는 조항이지만, 배포자가 명시적으로 추가하는 경우 활성화될 수 있는 조항.
본 발명의 실시예에서는, 오픈소스 라이선스가 적용되어 있는 임의의 저작물의 사용자가 원 저작물에 적용되어 있는 라이선스와 다른 라이선스로 재배포하려고 하는 경우의 두 라이선스 간의 충돌 검사 방법에 관하여 설명한다. 즉, 설명의 편의상 사용 라이선스와 배포 라이선스 간의 충돌을 검사하는 방법을 예로 들어 설명한다. 다만 본 발명의 실시예는 임의의 두 라이선스 간의 충돌을 검사하는 방법에 적용될 수 있으며, 이 경우 '사용 라이선스'는 '제1 라이선스'로, 배포 라이선스는 '제2 라이선스'로 일반화될 수 있다.
어떤 저작물이 임의의 사용 라이선스로 배포된 경우, 원 저작물의 사용자는 그 사용 라이선스의 내용에 따라야 한다. 또 임의의 사용 라이선스 하에 배포된 저작물을 임의의 배포 라이선스 하에 재배포하려는 경우, 재배포된 저작물의 사용자는 원 저작물의 사용 라이선스 대신 사용자가 적용한 배포 라이선스를 따라야 한다. 배포되는 저작물, 특히 FOSS 소프트웨어에 적용하는 라이선스는, 일반적으로 그 저작물의 사용을 허가하는 권리, 금지 사항 및 재배포시에 지켜야 할 사항 등이 명시되어 있다. 특히, 재배포에 관하여 사용 라이선스가 어떠한 제약을 가하고 있다면, 사용자는 그 제약 하에서 배포 라이선스를 선택해야 한다. 이 제약은 재배포에 직ㅇ간접적으로 관련있는 제약 전체를 의미한다.
그렇기 때문에, 사용자는 재배포물에 임의의 배포 라이선스를 적용하여 재배포하고 싶은 경우, 배포 라이선스와 사용 라이선스의 내용이 상충하지 않는지 확인해야 한다.
본 발명의 실시예에서 라이선스 호환성 문제는 다음과 같이 정의할 수 있다. 라이선스 집합은 L1={l1, l2, ...}, 특징점의 집합은 FP={fp1, fp2, ...}, 특징점에 대한 표현값의 집합은 ET={NoMention, Positive, Negative}, 그리고 호환성 판정값의 집합은 CS={Compatible, Suspicious, Incompatible}가 될 수 있다. 여기서, 특징점이란, 임의의 라이선스에서 소프트웨어 간의 연결 관계, 배포 의무, 수정, 특허에 대한 권리, 사적 이용, 라이선스 유지, 상표 이용 권리 등을 나타내는 각각의 규정 또는 조항을 의미한다.
각 라이선스 li는 모든 특징점 FP에 관하여 그 표현값
Figure 112016064985171-pat00001
를 해당 라이선스의 내용으로부터 배정하여 정의할 수 있다. 특징점에 대한 표현값은 라이선스의 내용을 수동으로 혹은 자동으로 분석하여 정의할 수 있다.
위의 정의에 따라, 특징점 프로파일(feature point profile) fppx를 다음과 같이 정의할 수 있다.
Figure 112016064985171-pat00002
. 어떤 라이선스 li의 각 특징점의 특징점 프로파일로부터, 라이선스 li에 관한 특징점 프로파일의 집합인 프로파일 셋을
Figure 112016064985171-pat00003
로 정의할 수 있다. 특히, 라이선스 간의 재배포 시의 호환성 문제는, 사용 라이선스 lo(original license)와 배포 라이선스 lt(target license)({lo, lt} ⊂ L)로 구성된다.
본 발명의 실시예에서는, FOSS 라이선스 78종에 대한 종합적인 분석을 통해, FOSS 라이선스의 호환성 검증시 필요한 대표적인 특징점으로 다음과 같이 23개의 특징점을 선정하였다. 다만 이러한 특징점들은 예시에 불과할 뿐이며, 특징점은 얼마든지 수정되거나, 삭제되거나, 추가될 수 있음은 물론이다.
1. (1) 추가 제약 금지(No further restriction)
해당 라이선스에서 명시적으로 정한 사항 이외에 사용자(수취인)의 권리를 제한하는 사항부과(sublicense, relicense 등으로) 제한
2. (2) 동일 라이선스 유지(Copyleft)
특정 라이선스로 배포된 소스코드를 수령하여 원본 혹은 수정하여 재배포할 때, 수령 당시 소스코드에 적용된 라이선스와 동일한 라이선스로 재배포할 것을 의무화
3. (3) No license fee, Royalty free
소스 코드의 저작권 사용에 대한 사용료 부과 금지
· 배포를 위해 소요되는 최소한의 배포 비용 청구는 해당하지 않는다.
· 서비스 비용 청구는 해당하지 않는다.
· 특허에 대한 No license fee, Royalty free와 구분한다.
4. Source Code 관련
(4) Code 공개
· 소스 코드 공개(원본 소스코드 혹은 원본+수정 소스코드)
· 소스 코드를 수령할 수 있음을 명시하는 조항 존재(예: to receive the complete machine-readable source code)
(5) Code 제공
· 소스 코드 제공 방법에 대한 명시(web에 올려라 혹은 USB로 제공해라 등)
· 소스 코드 제공 약정서 제공
· 소스 코드 제공 보증 기간 명시
· 소스 코드 배포에 소요되는 비용 청구 불가능 명시(일반적으로 배포에 소요되는 최소한의 비용 청구 가능하기 때문에, 청구가 불가능한 경우 매트릭스에 조항 표시)
5. Notice 유지
(6) Copyright notices 유지
· 저작권 및 저작권 관련 고지사항 유지
· Copyright (c) yyyy.mm.dd ***** and other contributors, All rights reserved.
(7) Author Attribution 유지 : 기여자 정보 기재
(8) Legal notices : 작성자 또는 기여자에게 유보되어 있는 지식재산권에 대한 고지사항 작성 및 유지
6. (9) 수정고지
소스 코드를 수정한 경우, 수정에 관한 사항을 명시(예: 수정일시, 수정파일명, 수정범위 등)
7. 특허
(10) 특허 실시 허락 : 소스코드 등에 관한 특허권 사용 실시 허락을 명시적으로 규정
(11) 특허보복조항 : 소스코드 등에 관한 특허권 사용 실시 허락을 명시적으로 규정
(12) 차별적 라이선스 금지 : 특허실시허락 부여에 차별을 두는 것을 금지(A에게 특허실시허락 부여, B에게 X)
8. Trademark 관련
(13) 광고목적 사용금지
(14) 상호, 상표, 서비스표 사용 금지
· 상호, 상표, 서비스표 사용 금지
· 기여자, 저작권자의 이름 사용 금지
· 구체적으로 '이름'을 명시하고 그 '이름' 사용 금지
9. 보증 관련
(15) 보증 부인 : 두 당사자간 계약을 통해 선택적으로 보증의무를 제공하는 것은 해당하지 않는다.
(16) 면책 : 두 당사자간 계약을 통해 선택적으로 책임의무를 제공하는 것은 해당하지 않는다.
10. (17) Permission of Reverse engineering : 코드 역분석 허용
11. (18) DRM 금지
참고 : GPL 3.0 제3조(기술수단에 대한 우회행위 금지)
12. (19) Installation Information 제공
제공된 코드를 컴파일ㅇ설치하는데 필요한 모든 정보를 제공할 의무. 수취자가 소스 코드를 수정하는데 필요한 파일이나 스크립트 등의 제공의무는 해당하지 않음
13. (20) 준거법
· 준거법 명시
· 관할 법원 명시
· 특정 법의 정의에 따라 라이선스 해석
14. 라이선스 변환 허용(Relicensing)
(21) 특정 라이선스로의 'Relicensing'
· '특정 라이선스' 명을 구체적으로 기재(예: GPL 2.0 등으로 변환 가능)
· '특정 라이선스'와 병행하여 사용 가능(예: GPL 3.0과 AGPL 3.0)
(22) 차기 라이선스로의 변환 허용
15. (23) 선택적인 조항 적용
필요에 따라 임의로 추가 가능한 라이선스 조항(특징점)
도 1은 본 발명의 일 실시예에 따른 라이선스 간 충돌 검사 방법의 흐름도를 나타낸다.
110단계에서, 주어진 사용 라이선스 lo에 대하여 각 특징점에 대한 표현값을 입력받고, 주어진 배포 라이선스 lt에 대하여 각 특징점에 대한 표현값을 입력받는다.
120단계에서, 배포 라이선스 lt에 대하여, 특징점 및 표현값으로 정의되는 특징점 프로파일의 집합인 프로파일 셋
Figure 112016064985171-pat00004
를 정의한다.
130단계에서, 사용 라이선스 lo의 각 특징점의 표현값에 기초하여, 각 특징점에 대하여 임의의 배포 라이선스의 어떤 특징점이 어떤 표현값을 가지는 경우 사용 라이선스의 해당 특징점과 충돌하는지를 나타내는 충돌 프로파일 셋(conflict profile set) psi 및 충돌 프로파일 셋의 리스트 cpsl(lo, fpx)를 정의한다. 이 충돌 프로파일 셋의 리스트는 사용 라이선스가 각 특징점에 대하여 어떤 표현값을 가지는지에 따라 정해진다.
일반적으로는 두 라이선스가 호환되는지 검토할 때 동종의 특징점에 대한 표현값만 고려하면 된다. 이를테면, Code 제공 사항과 면책 사항은 서로 무관하고, No license fee, Royalty free 사항과 라이선스 사본 제공 사항은 서로 무관하다. 이런 경우에는, 사용 라이선스와 배포 라이선스의 특징점 프로파일의 동일성만을 검사하면 호환성을 판단할 수 있다. 이러한 경우 각 특징점에 대한 충돌 프로파일 셋은 요소가 하나인 '충돌 프로파일'이면 충분하다.
그러나, 추가적 제약 금지 사항 또는 동일 라이선스 적용 사항과 같은 특징점의 호환성은, 자기 자신의 표현값 뿐만 아니라 다른 특징점의 표현값 또한 고려해야 한다. 이와 같은 문제로 인하여, 각 특징점에 대하여 '충돌 프로파일' 대신에 '충돌 프로파일 셋'을 정의한다. 예컨대, i 번째 특징점에 대한 충돌 프로파일 셋은, i 번째 특징점에 대한 특징점 프로파일만을 포함할 수도 있고(충돌 프로파일 셋의 요소가 하나인 경우), i 번째 특징점에 대한 특징점 프로파일과 함께 다른 j 번째 특징점에 대한 특징점 프로파일을 포함할 수도 있다(충돌 프로파일 셋의 요소가 둘 이상인 경우).
140단계에서, 충돌 프로파일 셋의 리스트 cpsl(lo, fpx)에 포함된 각 충돌 프로파일 셋 psi와 배포 라이선스의 프로파일 셋 ps(lt)를 비교하여 사용 라이선스와 배포 라이선스의 충돌 여부를 판단한다. 여기서, 어떤 충돌 프로파일 셋 psi ⊂ cpsl(lo, fpx)가 psi ⊂ ps(lt) 인 경우, 즉 어떤 충돌 프로파일 셋 psi이 배포 라이선스의 프로파일 셋 ps(lt)에 속하는 경우 사용 라이선스와 배포 라이선스는 충돌하는 것으로 판단할 수 있다.
위와 동일한 방식으로, 판단 유보에 관한 프로파일 셋, 즉 각 특징점에 대하여 임의의 배포 라이선스의 어떤 특징점이 어떤 표현값을 가지는 경우 충돌 여부에 대한 판단을 유보할 것인지를 나타내는 판단유보 프로파일 셋 및 판단유보 프로파일 셋의 리스트 hpsl(lo, fpx)를 정의하고, 어떤 판단유보 프로파일 셋이 배포 라이선스의 프로파일 셋 ps(lt)에 속하는 경우 사용 라이선스와 배포 라이선스가 충돌할 '가능성'이 있다고 판단할 수 있다. 이 경우 해당 특징점과 관련된 사항을 사용자에게 통지하여 사용자의 판단에 맡길 수 있다.
도 2 및 3은 본 발명의 다른 일 실시예에 따른 라이선스 간 충돌 검사 방법의 흐름도를 나타낸다. 본 실시예는 라이선스의 선택 조항과 변환 조항을 고려한 재귀적 충돌 검사 방법으로, Routine 1(도 2)과 Routine 2(도 3)로 구성된다.
선택 조항은 라이선스의 기본 상태에서는 무효하지만, 배포자의 판단에 따라서 유효화될 수 있는 제약·허가 사항이다. 사용 라이선스에 있는 제약이 배포 라이선스에 기본으로 들어 있지 않더라도, 사용자가 배포 라이선스에 그에 해당하는 선택 조항을 넣어서 배포함으로써 사용 라이선스와 배포 라이선스는 호환될 수 있다.
또한, 사용 라이선스에 변환 조항, 즉 사용 라이선스 하에 배포된 저작물을 변환 조항이 지정한 다른 라이선스로 재배포할 수 있다는 조항이 들어 있는 경우, 지정된 라이선스와 배포 라이선스가 호환성이 있으면 사용 라이선스와 배포 라이선스는 간접적으로 호환된다고 할 수 있다.
도 2를 참조하면, 100단계에서, 도 1을 참조하여 앞서 설명한 충돌 검사 방법을 통하여 사용 라이선스와 배포 라이선스 간의 충돌 여부를 검사한다.
210단계에서, 호환되는 것으로 판단되면 250단계로 진행하여 호환 판정을 한다.
210단계에서, 충돌하는 것으로 판단되면 220단계로 진행하여, 배포 라이선스가 선택 조항을 가지거나 사용 라이선스가 변환 조항을 가지는지, 즉 다른 라이선스로의 변환을 허용하는지 판단한다.
220단계에서 배포 라이선스가 선택 조항을 가지지도 않고 사용 라이선스가 변환 조항을 가지지도 않으면, 260단계로 진행하여 충돌(비호환) 판정을 한다.
220단계에서 배포 라이선스가 선택 조항을 가지거나 사용 라이선스가 변환 조항을 가지면, 230단계로 진행하여 도 3에 도시된 흐름도에 따라 라이선스 충돌 여부를 재검사한다(Routine 2 호출).
240단계에서, Routine 2에 따른 재검사 결과 호환되는 것으로 판단되면 250단계로 진행하여 호환 판정을 한다.
240단계에서, Routine 2에 따른 재검사 결과 충돌하는 것으로 판단되면 260단계로 진행하여 충돌(비호환) 판정을 한다.
도 3을 참조하면, 310단계에서, 배포 라이선스에는 포함되지 않고 사용 라이선스에만 포함되는 특징점이 존재하는지 판단한다. 이러한 특징점은, 배포 라이선스의 경우 표현값이 'NoMention'이고, 사용 라이선스의 경우 표현값이 'Positive' 혹은 'Negative' 등인 특징점에 해당한다.
배포 라이선스에는 포함되지 않고 사용 라이선스에만 포함되는 특징점이 존재하지 않으면 350단계로 진행하고, 존재하면 320단계로 진행한다.
320단계에서, 사용 라이선스에만 포함되는 특징점이 모두 배포 라이선스의 선택 조항에 포함되는지 판단한다. 사용 라이선스에만 포함되는 특징점이 배포 라이선스의 선택 조항에 포함되지 않으면 350단계로 진행하고, 모두 포함되면 330단계로 진행한다.
330단계에서, 배포 라이선스 대신에, 배포 라이선스에 선택 조항을 추가한 라이선스를 대상으로 도 2의 흐름도에 따라 라이선스 충돌 여부를 검사한다(Routine 1 호출).
340단계에서, Routine 1의 수행 결과 호환되는 것으로 판단되면 370단계로 진행하여 호환 판정을 한다.
340단계에서, Routine 1의 수행 결과 충돌하는 것으로 판단되면 350단계로 진행한다.
350단계에서, 사용 라이선스 대신에, 사용 라이선스가 변환을 허용한 다른 라이선스를 대상으로 도 2의 흐름도에 따라 라이선스 충돌 여부를 검사한다(Routine 1 호출).
360단계에서, 사용 라이선스가 변환을 허용한 다른 라이선스 중 어느 하나라도 배포 라이선스와 호환되는 것으로 판단되면 370단계로 진행하여 호환 판정을 한다.
360단계에서, 사용 라이선스가 변환을 허용한 다른 라이선스 모두 배포 라이선스와 충돌하는 것으로 판단되면 380단계로 진행하여 충돌(비호환) 판정을 한다.
앞서 설명한 바와 같이 FOSS 라이선스 78종으로부터 23개의 특징점을 선정하고, 10개의 라이선스(GPL 2.0, GPL 3.0, BSD-3, MIT, Apache 2.0, MPL 2.0, MS-RL, CDDL 1.0, EPL 1.0, 및 CeCILL 2.1)에 대하여 본 발명의 실시예에 따라 충돌 검사를 수행하였다. 도 4는 이에 따른 라이선스 호환성 매트릭스를 나타낸다.
도 4를 참조하면, GPL 2.0 은 그 자체로는 GPL 3.0과 호환되지 않지만 변환을 허용한 다른 라이선스를 통하여 GPL 3.0과 호환된다. 마찬가지로, CeCILL 2.1은 그 자체로는 GPL 2.0, GPL 3.0과 호환되지 않지만 변환을 허용한 다른 라이선스를 통하여 GPL 2.0, GPL 3.0과 호환된다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (10)

  1. 컴퓨터에 의해 수행되는 오픈소스 라이선스 간의 충돌 검사 방법에 있어서,
    (a) 상기 컴퓨터가, 주어진 제1 라이선스에 대하여 각 특징점에 대한 표현값을 입력받고, 주어진 제2 라이선스에 대하여 각 특징점에 대한 표현값을 입력받는 단계; 및
    (b) 상기 컴퓨터가, 상기 제1 라이선스의 각 특징점에 대한 표현값과 상기 제2 라이선스의 각 특징점에 대한 표현값을 이용하여 상기 제1 라이선스와 상기 제2 라이선스의 충돌 여부를 판단하는 단계를 포함하고,
    상기 (b) 단계는,
    (b1) 상기 컴퓨터가, 상기 제2 라이선스에 대하여, 특징점 및 표현값으로 정의되는 특징점 프로파일의 집합인 프로파일 셋을 정의하는 단계;
    (b2) 상기 컴퓨터가, 상기 제1 라이선스의 각 특징점의 표현값에 기초하여, 각 특징점에 대하여 임의의 라이선스의 어떤 특징점이 어떤 표현값을 가지는 경우 상기 제1 라이선스의 해당 특징점과 충돌하는지를 나타내는 충돌 프로파일 셋 및 상기 충돌 프로파일 셋의 리스트를 정의하는 단계; 및
    (b3) 상기 컴퓨터가, 상기 충돌 프로파일 셋의 리스트에 포함된 각 충돌 프로파일 셋과 상기 제2 라이선스의 프로파일 셋을 비교하여 상기 제1 라이선스와 상기 제2 라이선스의 충돌 여부를 판단하는 단계를 포함하고,
    상기 (b3) 단계는, 상기 충돌 프로파일 셋의 리스트에 포함된 어떤 충돌 프로파일 셋이 상기 제2 라이선스의 프로파일 셋에 속하는 경우 상기 제1 라이선스와 상기 제2 라이선스가 충돌하는 것으로 판단하며,
    상기 (b3) 단계에서 상기 제1 라이선스와 상기 제2 라이선스가 충돌하는 것으로 판단되는 경우, 상기 제2 라이선스에는 포함되지 않고 상기 제1 라이선스에만 포함되는 특징점이 존재하고, 상기 제2 라이선스가 선택 조항을 가지며, 상기 제1 라이선스에만 포함되는 특징점이 모두 상기 제2 라이선스의 선택 조항에 포함되면,
    상기 컴퓨터가, 상기 제2 라이선스 대신에 상기 제2 라이선스에 상기 제1 라이선스에만 포함되는 특징점에 해당하는 선택 조항을 추가한 라이선스를 대상으로, 상기 (a) 및 (b) 단계를 수행하는 단계를 더 포함하는 것을 특징으로 하는 충돌 검사 방법.
  2. 제1항에 있어서,
    상기 제1 라이선스는 사용 라이선스이고 상기 제2 라이선스는 배포 라이선스인 충돌 검사 방법.
  3. 제1항에 있어서,
    상기 표현값은, NoMention, Positive, Negative 중 어느 하나인 충돌 검사 방법.
  4. 제1항에 있어서,
    상기 특징점은, 추가 제약 금지, 동일 라이선스 유지, 사용료 부과 금지, 소스 코드 공개, 코드 제공을 포함하는 충돌 검사 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 따른 오픈소스 라이선스 간의 충돌 검사 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  6. 컴퓨터에 의해 수행되는 오픈소스 라이선스 간의 충돌 검사 방법에 있어서,
    (a) 상기 컴퓨터가, 주어진 제1 라이선스에 대하여 각 특징점에 대한 표현값을 입력받고, 주어진 제2 라이선스에 대하여 각 특징점에 대한 표현값을 입력받는 단계; 및
    (b) 상기 컴퓨터가, 상기 제1 라이선스의 각 특징점에 대한 표현값과 상기 제2 라이선스의 각 특징점에 대한 표현값을 이용하여 상기 제1 라이선스와 상기 제2 라이선스의 충돌 여부를 판단하는 단계를 포함하고,
    상기 (b) 단계는,
    (b1) 상기 컴퓨터가, 상기 제2 라이선스에 대하여, 특징점 및 표현값으로 정의되는 특징점 프로파일의 집합인 프로파일 셋을 정의하는 단계;
    (b2) 상기 컴퓨터가, 상기 제1 라이선스의 각 특징점의 표현값에 기초하여, 각 특징점에 대하여 임의의 라이선스의 어떤 특징점이 어떤 표현값을 가지는 경우 상기 제1 라이선스의 해당 특징점과 충돌하는지를 나타내는 충돌 프로파일 셋 및 상기 충돌 프로파일 셋의 리스트를 정의하는 단계; 및
    (b3) 상기 컴퓨터가, 상기 충돌 프로파일 셋의 리스트에 포함된 각 충돌 프로파일 셋과 상기 제2 라이선스의 프로파일 셋을 비교하여 상기 제1 라이선스와 상기 제2 라이선스의 충돌 여부를 판단하는 단계를 포함하고,
    상기 (b3) 단계는, 상기 충돌 프로파일 셋의 리스트에 포함된 어떤 충돌 프로파일 셋이 상기 제2 라이선스의 프로파일 셋에 속하는 경우 상기 제1 라이선스와 상기 제2 라이선스가 충돌하는 것으로 판단하며,
    상기 (b3) 단계에서 상기 제1 라이선스와 상기 제2 라이선스가 충돌하는 것으로 판단되는 경우, 상기 제1 라이선스가 상기 제1 라이선스 이외의 다른 라이선스로의 변환을 허용하면,
    상기 컴퓨터가, 상기 제1 라이선스 대신에 상기 다른 라이선스를 대상으로, 상기 (a) 및 (b) 단계를 수행하는 단계를 더 포함하는 것을 특징으로 하는 충돌 검사 방법.
  7. 제6항에 있어서,
    상기 제1 라이선스는 사용 라이선스이고 상기 제2 라이선스는 배포 라이선스인 충돌 검사 방법.
  8. 제6항에 있어서,
    상기 표현값은, NoMention, Positive, Negative 중 어느 하나인 충돌 검사 방법.
  9. 제6항에 있어서,
    상기 특징점은, 추가 제약 금지, 동일 라이선스 유지, 사용료 부과 금지, 소스 코드 공개, 코드 제공을 포함하는 충돌 검사 방법.
  10. 제6항 내지 제9항 중 어느 한 항에 따른 오픈소스 라이선스 간의 충돌 검사 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1020160084786A 2016-07-05 2016-07-05 특징점 기반의 오픈소스 라이선스 간 충돌 검사 방법 KR101766859B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160084786A KR101766859B1 (ko) 2016-07-05 2016-07-05 특징점 기반의 오픈소스 라이선스 간 충돌 검사 방법
JP2019520340A JP6681519B2 (ja) 2016-07-05 2016-11-11 特徴点基盤のオープンソースライセンス間の衝突検査方法
PCT/KR2016/012980 WO2018008810A1 (ko) 2016-07-05 2016-11-11 특징점 기반의 오픈소스 라이선스 간 충돌 검사 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160084786A KR101766859B1 (ko) 2016-07-05 2016-07-05 특징점 기반의 오픈소스 라이선스 간 충돌 검사 방법

Publications (1)

Publication Number Publication Date
KR101766859B1 true KR101766859B1 (ko) 2017-09-06

Family

ID=59925089

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160084786A KR101766859B1 (ko) 2016-07-05 2016-07-05 특징점 기반의 오픈소스 라이선스 간 충돌 검사 방법

Country Status (3)

Country Link
JP (1) JP6681519B2 (ko)
KR (1) KR101766859B1 (ko)
WO (1) WO2018008810A1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005099963A (ja) 2003-09-22 2005-04-14 Konica Minolta Photo Imaging Inc ライセンス管理システム及びライセンス管理方法並びにライセンス管理用記録媒体

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101999656B1 (ko) * 2012-06-20 2019-07-12 삼성전자 주식회사 라이선스 검증 방법, 그 장치 및 이를 실행하기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체
KR20140050323A (ko) * 2012-10-19 2014-04-29 삼성전자주식회사 라이선스 검증 방법 및 그 장치
KR101648047B1 (ko) * 2014-11-10 2016-08-16 엘에스웨어(주) 호환 오픈소스 소프트웨어 추천 시스템 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005099963A (ja) 2003-09-22 2005-04-14 Konica Minolta Photo Imaging Inc ライセンス管理システム及びライセンス管理方法並びにライセンス管理用記録媒体

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Thomas F. Gordon. 'Analyzing open source license compatibility issues with Carneades'. Proceedings of the 13th International Conference on Artificial Intelligence and Law, 2011, pp.51-55.
박준석. '오픈 소스 소프트웨어 라이선스 충돌의 구조적 해결을 위한 관리 프레임워크 개발 및 적용 전략에 관한 연구'. 상명대학교 대학원. 2015.*

Also Published As

Publication number Publication date
JP6681519B2 (ja) 2020-04-15
WO2018008810A1 (ko) 2018-01-11
JP2019520665A (ja) 2019-07-18

Similar Documents

Publication Publication Date Title
US7552429B2 (en) Integrated development environment for managing software licensing restrictions
US8869299B2 (en) Method and system for generating trusted security labels for electronic documents
TWI465935B (zh) 用於軟體授權的系統、方法及電腦可讀取媒體
CN102667712B (zh) 用于同时定义和实行访问控制和完整性策略的***、方法和装置
US20080209393A1 (en) System and method to automatically detect incompatible licensing models
CN104508676B (zh) 虚拟机中的强制保护控制
CN100574210C (zh) 一种基于无等级角色间映射的访问控制方法
Washizaki et al. Taxonomy and literature survey of security pattern research
Hahner Dealing with Uncertainty in Architectural Confidentiality Analysis.
US9009852B2 (en) Method, SOA registry and SOA repository for granting a user secure access to resources of a process
KR101766859B1 (ko) 특징점 기반의 오픈소스 라이선스 간 충돌 검사 방법
Blanco et al. Security policies by design in NoSQL document databases
Fendt et al. Industrial experience with open source software process management
M. Mahally et al. Barriers and enablers for shortening software development lead-time in mechatronics organizations: A case study
Wirtz et al. Managing security risks: template-based specification of controls
CN115550010A (zh) 一种基于区块链的关键环境访问控制方法
Matulevičius et al. An approach to assess and compare quality of security models
Mutti et al. Policy specialization to support domain isolation
US10747871B2 (en) System and method for producing secure data management software
Lee et al. SWC-based smart contract development guide research
Bijlsma et al. Evaluation of design pattern alternatives in Java
Alam et al. A constraint based role based access control in the SECTET a model-driven approach
Sherlock et al. Open Source Software Opportunities and Risks
Katt et al. Towards a usage control policy specification with Petri nets
Idani et al. Towards a model driven formal approach for merging data, access control and business processes

Legal Events

Date Code Title Description
GRNT Written decision to grant