2022년 7월 22일 금요일

커스텀 리눅스 배포(distro)를 공개하면 거기에 포함된 프로그램의 라이선스는 어떻게 되나?

생명정보학 관련 교육 프로그램을 진행하다 보면 늘 걸리는 것이 실습 환경이다. R이나 파이썬이라면 아나콘다를 이용하면 되므로 큰 문제가 되지 않는다. 수강생이 노트북 컴퓨터를 준비해 오면, Jupyter Notebook을 설치하는 것으로 실습을 시작하면 된다. 

리눅스 초급 강좌라면 어떻게 하겠는가? 가장 고전적인 스타일은 실습용 서버에 계정을 임시로 생성해 둔 다음 터미널 에뮬레이터로 접속하여 실습을 하는 것이다. 명령행 인터페이스를 익히는 정도라면 이렇게 해도 된다. 리눅스 설치를 직접 경험해 보는 것이 중요하다면, Windows Subsystem for Linux(WSL)를 이용하여 일반 PC의 윈도우 환경에 리눅스를 설치할 수도 있다. 단, 마이크로소프트 스토어를 통해서 공식적으로 내려받아 설치할 수 있는 리눅스 배포는 그 종류가 아주 다양하지는 않다. Docker를 이용하여 WSL용 coustm Linux를 셋업하는 기법도 있다고 하니 참조해 볼 만하다. 다음 링크의 글에서는 Microsoft Store에서 제공하지 않는 CentOS Stream 8 환경을 만드는 사례를 소개하였다. 사람들의 응용력이란 참으로 대단하다!

Create a Custom Linux Setup for WSL2

미생물의 유전체 조립 및 주석화 정도라도 실습 내용에 포함시키려면 문제는 더 커진다. Conda가 있으니 필요한 프로그램을 서버에 사전 설치하는 것은 별 문제가 아니다. 그런데 수강생들이 실습을 마치고 현장에 돌아가서 실무를 접할 때의 상황은 제각각일 것이다. 자기가 관리자 권한을 갖는 서버급 컴퓨터가 있다면 다행이겠지만, 대부분은 그렇지 않을 것이다. 따라서 필요한 프로그램 패키지를 직접 설치해 보는 것이 매우 중요한데, 실습 시간에 모두가 Miniconda부터 시작해서 필요한 패키지를 설치하게 유도하면 너무 시간이 많이 걸린다. Miniconda installer 정도는 설치가 빨리 끝나겠지만, 몇 개의 conda channel에서 여러 패키지를 가져오려면 의존성 체크 등으로 시간이 많이 걸린다. Mamba 덕분에 시간을 줄이는 것은 가능해졌으나, conda에 익숙해지기도 이해하기 어려운데 mamba까지 설명하기에는 어렵다.

그래서 어제(2022년 7월 21일) 있었던 KOBIC 차세대 생명정보 교육에서 내가 택한 대안은 WSL로 설치할 수 있는 우분투 배포('distro')를 사전에 제공하는 것이었다. 우분투 20.04 LTS(Focal Fossa)에 conda를 이용하여 실습에 사용할 소프트웨어를 미리 설치한 다음, 9 GB를 조금 넘는 tar 파일로 제공하여 실습일 전에 미리 노트북 컴퓨터에 설치해 보라고 하였다. 실제 교육에서는 실습실에 있는 PC를 사용하였다. 왜냐하면 노트북 컴퓨터의 성능이 제각각이라서 실행 시간에 차이가 날 수 있기 때문이다. 그리고 모두가 다 노트북을 갖고 다니는 것도 아닐 것이고... 더 큰 문제는 실습실의 네트워크 보안이 까다로워서 자료(명령어 모음 파일) 최종본을 당일 교육장에서 Wi-Fi를 통해 배포하기가 어려웠기 때문이다. 실습 내용 중에는 NCBI에서 유전체 및 raw sequencing read를 직접 다운로드하는 것도 있었다. 유선 LAN이 아니라면 시간을 맞추기가 어려웠을 것이다.

이러한 형식의 교육을 올해 3회 실시하였다. WSL에서 사용 가능한 커스텀 리눅스 배포를 만들어서 제공하는 모델은 나름대로 성공적이었다고 생각한다. 다만 실습 환경이 PC 또는 노트북 컴퓨터이므로 아주 큰 규모의 계산을 하는 것은 어렵다. 예를 들어서 100개 정도의 박테리아 유전체에 대한 pan-genome analysis('roary')라든가 pyani 계산 같은 것 말이다. GPGPU가 필요한 나노포어 시퀀싱 자료의 high-accuracy basecalling도 그러하다.

여기까지 해 놓고 보니 새로운 고민거리가 생겼다. 우분투에 곁들여 설치한 프로그램(대부분 conda를 통해 설치했지만 pip 또는 다른 방법으로 설치한 것도 있음)의 라이선스를 죄다 점검해 봐야 하는 것이 아닐까? 개인이 비상업적 용도로 직접 conda 패키지를 설치하는 것은 문제가 없지만, 우분투에 심은 상태로 제3자에게 제공하는 것에 대한 제한은 없을까? 이에 대한 답을 지금부터 찾아 나가야 한다.

한국저작권위원회에서 운영하는 오픈소스SW라이선스 종합정보시스템(OLIS)이라는 웹사이트가 있다. 이곳을 탐독하는 것으로부터 시작해야 될 것이다. 나는 프로그램 개발자가 아니지만, 이미 만들어진 소프트웨어를 다른 사람에게 배포하는 입장이 되다 보니 해당 소프트웨어가 어떤 라이선스를 통해서 배포되는지 소홀히 할 수 없게 되었다. 라이선스 소개라이선스 비교표를 한번 보라. 머리에서 슬슬 김이 나려고 한다. 각 라이선스마다 다음의 사항이 전부 다르며, 나의 경우에는 배포에 관련한 사항을 주목하여야 한다(OLIS 라이선스 비교표에서 인용).

  • 복제, 배포, 수정의 권한 허용
  • 배포시 라이선스 사본 첨부
  • 고지권 고지사항 또는 attribution 고지사항 유지
  • 배포시 소스코드 제공의무와 범위
  • 조합저작물 작성 및 타 라이선스 배포허용
  • 수정 내용 고지
  • 명시적 특허라이선스의 허용
  • 라이선시가 특허 소송 제기시 라이선스 종료
  • 이름, 상표, 상호에 대한 사용 제한
  • 보증의 부인
  • 책임의 제한

apt 명령으로 설치한 deb 패키지는 가장 느슨한 라이선스를 표방할 것만 같다. 설치된 대부분의 deb 패키지는 /usr/share/doc/<packagename>/copyright라는 텍스트 파일에 저작권 관련 사항을 기록해 놓았으나 일정한 형식을 갖추지는 않는다. MUMmer의 사례를 보자.

$ cat /usr/share/doc/mummer/copyright 
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: MUMmer
Source: https://sourceforge.net/projects/mummer/files/mummer/
Files-Excluded: */M*.pdf
                */X*.pdf

Files: *
Copyright: © 2003 by Stefan Kurtz and The Institute for Genomic Research.
           © 1999 by The Institute for Genomic Research.
License: Artistic
Comment: MUMmer 1.0 code and documentation are copyright (c) 1999 by The
 Institute for Genomic Research.  The principle architect for the system was
 Arthur Delcher.

Files: debian/*
Copyright: 2005-2007 Steffen Moeller <moeller@inb.uni-luebeck.de>,
           2007-2016 Andreas Tille <tille@debian.org>
License: GPL
 Available at `/usr/share/common-licenses/GPL'.

License: Artistic
 This program is free software; you can redistribute it and/or modify it
 under the terms of the "Artistic License" which comes with Debian.
 .
 THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
 WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES
 OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Comment: On Debian systems, the complete text of the Artistic License
 can be found in ‘/usr/share/common-licenses/Artistic’.

Debian-기반 리눅스에서 설치된 패키지의 라이선스 정보를 출력하는 유틸리티(dpkg-licenses)가 따로 존재한다. Conda 패키지라면 각 환경 디렉토리로 가서 다음 명령어를 실행하면 된다.

grep '"license":' conda-meta/*.json

그러면 pip로 설치한 파이썬 패키지? git로 클로닝한 소스 코드는? legacy blast는? 개별적으로 라이선스 관련 문서를 찾아서 확인해 봐야 할 것이다. 개인적 사용과 비교하였을 때 '배포'는 훨씬 더 큰 책임이 따른다는 것을 인식하는 것이 중요하다.



댓글 없음: