1. 라이선스 확인의 중요성


현재 우리는 수 많은 Open Source Software(이하 OSS)를 이용하고 많은 종류의 OSS를 이용하여 또 다른 OSS 및 여러 프로그램들을 만들고 있다. 이렇게 많은 종류의 OSS를 사용하면서 개발자들이나 심지어 기업들은 OSS에 저작권 정보를 인식하지 못하면서 OSS를 자신의 프로젝트에 사용 및 배포하고 있다. 어떠한 OSS는 아무런 제약 조건이 없어 사용자가 해당 OSS를 마음대로 가져다 사용 수 있으며 심지어 이 OSS를 상용 제품에 포함시켜 상용제품을 판매 및 배포할 수 있다. 하지만, 대부분의 OSS는 배포 시 배포자가 지켜야 할 규약들을 포함하고 있기 때문에 다른 사용자에게 OSS OSS를 사용한 프로그램을 배포 할 경우 각 규약들을 지켜야 한다. 이러한 규약들을 지칭하여 라이선스라고 한다. 만약 이러한 라이선스 규약들을 지키지 않고 OSS를 배포할 경우 많은 불이익을 당할 수 있다. 예를 들어 사용제품일 경우 저작권자로부터 수익 Share, 판매금지, 손해배상 청구 등 회사에 심각한 타격을 입힐 수 있는 요청이 있을 수 있으며 개인일 경우도 이와 비슷한 처분이 내려질 수 있다.

 

이러한 끔직한 불이익을 당하지 않기 위해서는 OSS를 사용시 자신이 어떠한 OSS를 사용하고 있고 사용중인 OSS에 어떠한 라이선스가 적용되었는지 파악 및 관리를 해야 한다. 자신의 프로젝트에 사용되고 있는 OSS의 라이선스를 파악하기 위해서는 개발 초기 단계부터 프로젝트에 사용중인 OSS의 홈페이지를 방문하여 어떠한 라이선스가 적용되어 있고 해당 라이선스에 어떠한 규약들이 적용되어 있는지 확인하고 관리하는 것이 가장 좋은 방법이다. 하지만 이렇게 사용자가 하나하나 코드 및 파일 레벨에서 직접 확인 할 경우 많은 시간이 투자되어지며 사람이 직접 확인하다 보니 실수로 잘못 확인 할 수 도 있다. 이러한 실수를 피하기 위해서는 OSS 라이선스를 확인할 수 있는 자동화 도구를 활용하는 방법이 있다. 도구 중 상용제품 중에는 Blackduck (http://www.blackducksoftware.com) Protex라는 제품이 있으며 이 제품은 코드 비교, 문자 검색, 의존성 검색 등 OSS를 분석할 수 있는 도구 중 가장 뛰어난 정확성과 기능을 제공하는 제품이지만 구매 가격이 높아 개인이 사용하기에는 무리가 있다. 이외 상용제품으로는 Palamida(http://www.palamida.com)Protecode(http://www.protecode.com) 등이 있다. 상용제품에 비해 기능은 떨어지지만 공개소프트웨어로 이와 같은 목적으로 만들어진 fossology(http://www.fossology.org)라는 제품이 있으며 이 도구는 HP에서 개발하였으며 GPL 라이선스가 적용되었다. 이 도구는 현재 공개가 되어 누구나 이용할 수 있으며 도구의 소스코드 또한 다운이 가능하다. 이외 바이너리리를 검사할 수 있는 Binary Analysis(http://www.binaryanalysis.org/en/home)라는 도구가 있으며 이 도구 또한 누구나 이용할 수 있다. 다만 이 도구는 코드를 분석하는 것이 아닌 바이너리 레벨에서 분석하는 도구이다.

 

다음 세션부터는 검사도구 중 오픈되어 있는 fossology의 설치환경, 설치방법, 사용방법에 대해서 기술 할 것이다. 이를 참고하여 자신이 사용하고 있는 OSS가 어떠한 라이선스하에 배포되고 있는지 확인, 관리, 사용, 배포하기를 바란다.

 


2. 설치 과정


아래의 설정 값들은 이 글에서 테스트 되어지는 장비에 맞춰진 설정 값이다. 각각의 설정 값은 사용되는 장비에 따라 달라 질 수 있으며 자세한 설정 값은 각 패키지들의 문서를 참조하기 바란다.

 

a. OS 종류를 먼저 확인 후 OS를 설치한다.

사용되어진 OS Ubuntu karmic koala 9.10 이다. CentOS, Fedora등 다른 리눅스 계열에서도 fossology의 설치가 가능하지만 fossology는 우분투(karmic koala 9.10)에서 패키지형식으로 설치 지원이 되어 손쉽게 설치할 수 있다. OS 설치와 관련되어진 자세한 사항은 OS 설치관련 다른 문서를 참고하기를 바란다.

 

* 테스트 되어진 Ubuntu karmic koala 9.10 를 다운 받을 수 있는 주소는 다음과 같다.

http://old-releases.ubuntu.com/releases/karmic/

 

b. OS설치 후 apt-get를 통해 fossology를 설치한다.

 # apt-get install fossology

위를 입력하면 fossology를 실행하는데 필요한 패키지(php5, apache2, postgresql 8.3, lib* )들이 자동 설치된다.

 

c. fossology를 설치 한 후 각 설정 파일들을 수정한다.

다음을 Command Line에 입력 한다.

 # echo 512000000 > /proc/sys/kernel/shmmax

# echo "kernel.shmmax=512000000" >> /etc/sysctl.conf

d. /etc/postgresql/<version>/main/postgresql.conf 파일을 열어 다음 설정 값들을 수정한다.

#hba_file = 'ConfigDir/pg_hba.conf'# host-based authentication file

#ident_file = 'ConfigDir/pg_ident.conf'# IDENT configuration file

#external_pid_file = '(none)'# write an extra pid file

listen_addresses = '*'

max_connections = 50

#shared_buffers = 1000# min 16 or max_connections*2, 8KB each

shared_buffers = 32768

work_mem = 102400

max_fsm_pages = 100000# min max_fsm_relations*16, 6 bytes each

fsync = off

full_page_writes = off#recover from partial page writes

commit_delay = 1000

effective_cache_size = 25000

log_min_duration_statement = -1# -1 is disabled, 0 logs all statements

log_line_prefix = '%t %h %c'# prepend a time stamp to all log entries

e. /etc/php5/apache2/php.ini 파일을 열어 다음 설정 값들을 수정한다.

 max_execution_time = 90

memory_limit = 702M

post_max_size = 701M

upload_max_filesize = 700M 

f. /etc/apache2/sites-available/defualt 파일을 열어 다음과 같이 수정한다.

 Alias /repo/ /usr/share/fossology/www/

<Directory "/usr/share/fossology/www/">

AllowOverride None

Options followSymLinks MultiViews

Order allow,deny

Allow from all

# uncomment to turn on php error reporting

#php_flag display_errors on

#php_value error_reporting 2039

</Directory> 

g. /usr/share/cups/doc-root/robots.txt 파일을 열어 다음과 같이 수정 한다.

 User-agent: *

Disallow: /repo 

h. 모든 설정 파일의 수정 후 다음을 실행 한다.

 # etc/init.d/apache2 stop

# etc/init.d/apache2 start

# etc/init.d/postgresql8.3 stop

# etc/init.d/postgresql8.3 start

# etc/init.d/fossology stop

# etc/init.d/fossology start 

i. 브라우저를 열어 다음 정보를 이용하여 설치되어진 fossology에 접속한다.

Account는 Defualt 되어진 설정 값이다.

 Address : http://127.0.0.1/repo/

ID : fossy

PW :fossy



3. 사용방법


- 로그인 후의 첫 화면은 다음과 같이 매우 심플하다.

 1.jpg


위에서 보는 바와 같이 각 메뉴의 기능이 어떠한 기능이지 도저히 감이 오질 않는다.

어떠한 메뉴를 사용하여 어떻게 파일들을 검증을 하는지 다음을 통해 확인하자.

 

■ Project 생성 및 분석 방법


- Upload 메뉴를 보면 검증할 대상이 되는 파일들을 선택할 수 있다. fossology가 설치되어진 서버 안의 폴더나 URL을 입력하여 온라인으로 파일을 가져와 분석할 수 있다.


다음은 Upload > Upload from Server 메뉴를 클릭하여 서버에 저장되어 있는 파일을 가져오기 위한 설정 내용이다.


 2.jpg 

각 메뉴에 대한 설명은 다음과  같다.

> Select the folder for storing the upload : 소스코드 업로드 시 카테고리를 구분 짓기 위해 사용되는 메뉴이다.

> Select the directory or files(s) on the server to upload : 검증 대상이 되는 소스코드의 위치를 입력하는 메뉴이다.

> Files can be placed in alphabetized sub-folders for organization(옵션) : 분석 후 분석 대상이 되는 폴더 아래의 폴더를 알파벳 별로 정렬할 것인지에 대한 옵션이다.

> Enter a description for this Upload (옵션) : 업로드 되어지는 프로젝트에 대한 설명을 기입하는 곳이다.

> Enter a viewable name for this Upload (옵션) : 업로드 되어지는 프로젝트의 이름을 설정하는 곳이다.

> Select optional analysis : 분석되어지는 대상에 대한 옵션을 설정하는 곳이다.

 

위의 설정을 끝내고 Upload를 클릭하면 분석이 시작된다.

 

- 분석은 바로 실행이 되지 않고 다음과 같이 Queue에 따라 실행이 되며 Jobs 메뉴에서 다음과 같이 분석되어지는 과정을 확인할 수 있다.

 

3.png
  

위에서 보는 바와 같이 각 색상 별로 작업 되어지는 순서를 알 수 있다.

위의 노란색은 Queue 되어진 작업을 표시하고 있으며 파란색은 분석을 위해 Schedule 되어진 작업을 표시하고 있다.

 

 - 모든 분석이 완료된 후 Browse 메뉴를 보면 분석되어진 폴더 및 사용자가 입력한 Description을 확인할 수 있다.

 

4.jpg

 

- 다음은 분석되어진 폴더의 파일 구조이다. 각 파일 및 폴더를 클릭하면 분석되어진 코드와 결과 값들의 확인 및 다운로드 할 수 있다

 

5.jpg
 

- License Browser를 클릭하여 보면 다음과 같이 분석되어진 프로젝트로부터 검출되어진 라이선스 리스트와 함께 매치되어지는 파일 개수를 확인할 수 있다.

 

6.jpg

 

- License Tree를 클릭하면 각각의 디렉토리/파일 별로 어떠한 라이선스들과 매치가 되는지 확인할 수 있다.

 

7.jpg
 

- 분석되어진 하나의 파일을 클릭하면 다음과 같은 결과 값을 확인할 수 있다. 결과 값을 보면 fossology 설치 시 기본으로 설치되어지는 360개의 라이선스 원문 중 Apache Software License 1.1의 원문을 포함하는 파일을 찾아 매치되는 부분을 노란색으로 표시하고 있는 것을 확인할 수 있다.

 

 8.jpg 

다음 결과는 ‘World Wide Web Consortium Document 2002’ – style 라이선스가 분석되어진 결과를 보여주고 있다.

 

9.jpg

 

- fossology의 아쉬운 점은 아래와 같이 주석 및 코드에 라이선스 정보가 없으면 라이선스 매치 정보를 찾을 수 없다.

  

10.jpg
 

■ 그 밖에 기능


- Upload > On-Shot License를 사용하면 Queue 작업에 의한 분석의 기다림 없이 바로 분석을 할 수 있으나 100K 미만의 하나의 파일만 분석을 할 수 있다.

 

11.jpg
  

- Organize > License 메뉴를 보면 기본적으로 설치되어진 라이선스들을 확인할 수 있으며 분석이 실행될 때 각 라이선스들의 사용여부에 대하여 Enable 또는 Disable도 설정할 수 있다. 또한, 사용자가 추가로 라이선스를 생성 하여 분석 시 사용할 수 있다.

 

 12.jpg

 

- Organize > Uploads > Delete Uploaded File을 클릭하면 분석하였던 파일들 및 프로젝트들을 삭제 할 수 있다.

 

13.jpg

 

- Admin > Dashbord를 보면 현재 fossology의 상태 및 서버의 상태를 확인할 수 있다분석되어진 프로젝트 개수, 몇개의 파일이 업로드 되었는지, 현재 분석되고 있는 프로젝트 개수, DB 사이즈 크기, Disk Space등 Admin이 서버 관리에 필요한 정보를 한눈에 볼 수 있도록 정리하여 보여주고 있다.


14.jpg 

- Admin > Users > Account Settings/Add/Delete 메뉴들을 이용하여 각 유저들의 정보 수정/새로운 계정 생성/유저 삭제를 실행 할 수 있다Email을 입력하면 분석 진행 사항에 대하여 받아볼 수 있다.


 15.jpg 

 - Admin > Database > Vacuum and Analyze/Check/Check_Template/Schema 메뉴들을 통해 fossology 함께 설치되어진 Postgresql Database의 상태 체크 및 Database 정리를 실행할 수 있다이러한 Vacuum 작업은 주기적으로 실행 시켜야 DB의 최적화가 이루어지는데 이러한 기능을 명령어를 사용하지 않고 손쉽게 사용할 수 있도록 UI,를 제공한다는 것은 훌륭한 기능으로 생각 된다.

 

16.jpg

 

- Search 메뉴를 이용하여 파일을 검색하면 분석이 되어진 프로젝트들 중 검색한 파일 이름과 일치한 파일이 있으면 표시 해주고 이를 통해 해당 파일에 접근할 수 있다특정 파일에 대한 라이선스를 조회 할 때 유용하게 사용할 수 있을 것 같다.

 

17.jpg

 


4. fossolgy의 장점/단점


- 장점

> 누구나 이용이 가능하다.

> 많은 중류의 OS(RHEL, Cent OS, Debian, Fedora, Ubuntu)를 지원하며 Apache, PHP, Postgresql이 설치가 되어있다면 fossology의 설치가 가능하다.

> 설치 장애나 사용 장애 시 Community의 지원을 받을 수 있다.

> 저 사양 PC에서도 설치가 가능하다.

> fossology에서 기본 제공하는 라이선스(360개의 라이선스) 원문 외에 사용자가 추가 입력이 가능하다.

 

- 단점

> 코드 비교 분석이 아닌 파일에 포함되어진 라이선스 원문(주석부분에 기술되어진 라이선스 정보)의 검색으로 파일에 라이선스 원문이 포함되어있지 않을 경우 OSS를 찾아 내기 힘들다.

> 사용 매뉴얼이 자세히 기술되어 있지 않아 처음 사용자에게는 설치 및 사용하기에 다소 불편 할 수 있다.

> 코드의 라이선스 원문만 확인할 수 있으며 프로젝트에 상용되어지는 라이선스간 충돌을 확인할 수 없다.

> 분석되어진 결과를 사용자가 저장하기 위해 Report 형식으로 출력하는 기능이 없어 사용자가 수동으로 분석 결과 Report를 작성해야 한다.

 


5. 라이선스를 확인 후 OSS를 사용하자


앞에서 기술한 바와 같이 fossolgy를 통해 내가 사용하는 OSS 파일에 어떠한 라이선스들이 적용 되었는지 확인할 수 있다. 비록 각 라이선스가 요구하는 요구사항들을 하나하나 확인할 수는 없지만 자신이 사용하고 있는 OSS 각각의 파일에 어떠한 라이선스가 적용되어 있는지 확인할 수 있다. 각 라이선스마다 적용되어진 요구 사항들은 각 라이선스 홈페이지에서 확인할 수 있지만 원문으로 되어 있으며 법률적인 내용이 많아 이해하기 어려울 것이다. 한국저작권위원회가 운영하는 Olis.or.kr을 방문하면 각 라이선스에서 요구하는 요구사항 및 원문들을 한글로 정리를 하였기 때문에 라이선스들에 대한 이해를 쉽게 할 수 있어 OSS 라이선스에 대하여 확인이 필요할 경우 OLIS 홈페이지를 방문하여 각각의 라이선스들이 요구하는 요구사항들을 체크하는 것을 권장한다.

 

앞으로 어떠한 프로젝트들을 개발한다면 각 코드, 파일, 모듈, 프로젝트에 적용되어진 라이선스들의 확인이 필요하다는 것을 인지하여 여기서 소개 되어진 fossology를 사용하여 프로젝트 개발에 도움을 주었으면 한다.

공개SW 설치/활용 게시물 리스트 표
번호 제목 작성자 조회수 작성
39 Alfresco 유저 가이드 OSS 10204 2016-08-16
38 Alfresco 설치 가이드 file OSS 25693 2013-10-28
37 KVM 설치 가이드 file OSS 35010 2013-10-11
36 Hive 설치 가이드 file OSS 19004 2013-09-30
35 Cassandra 테스트 환경 구축 가이드 file OSS 26534 2013-06-18
34 활용도가 높은 메모장 '톰보이' 생생한 사용기. file 소재성 29300 2011-10-28
33 Audacity를 이용한 소리 편집 DK 33154 2011-10-28
32 공개 소프트웨어 실 업무 적응기 큰사람 28198 2011-10-28
31 OSS를 활용하여 OSS 저작권 문제를 관리하자!! - Fossology file primobeat 27057 2011-10-28
30 Stellarium (스텔라리움) - 오픈소스 플레타리움 file 태권브이 37452 2011-10-28