과학 발전에 기여하는 소프트웨어 개발자

- 오픈소스 소프트웨어를 지원하고 잘 유지하는 방법

2019년 4월 10일(현지시간), 인류 역사상 처음으로 블랙홀이 공개됐다. 전 세계 과학사에 길이 남을 이번 쾌거는 오픈소스로 만든 파이썬(Python) 데이터 시각화 라이브러리 맷플롯립(Matplotlib)을 사용해 이루어졌다. 

이제는 과학 연구에 오픈소스 소프트웨어는 필수가 됐다. 하지만 당시 “오픈소스 소프트웨어가 없었다면 이런 연구 성과가 불가능했을 것”이라는 헤드라인 뉴스는 찿아 볼 수 없었다. 이러한 연구 성과 뒤에는 오픈소스 소프트웨어 운용자와 개발자들의 알려지지 않은 고생이 분명히 있다는 사실이다. 

출처: 이벤트호라이즌

■ 사용자 측면

과학연구에 사용되는 오픈소스 소프트웨어는 가끔 과학자 스스로 만들고 있지만, 대부분 과학자들은 소프트웨어 개발 전문가가 아니기 때문에, 제대로 된 소프트웨어를 만들 수 없다. 따라서 개발·운용에 능숙하지 않은 과학자들에게 소프트웨어는 연구에 도움은커녕 오히려 시간과 노력을 낭비하는 셈이다.

뉴욕 콜드스프링하버 연구소(Cold Spring Harbor Laboratory) 전산 생물학자인 아담 시펠(Adam Siepel)는 "생물학자들은 다른 연구자가 작성한 컴퓨터 코드 때문에 고생할 수 있다. 과학자들 사이에서 사용되는 소프트웨어 도구 중 일부는 실행 즉시 중단 또는 제대로 컴파일 되지 않거나. 지원하는 웹 사이트가 없거나 링크가 깨진 경우가 있기 때문이다“고 어려움을 말했다.

그 해결 방안으로 독일 하이델베르그(Heidelberg)에 있는 유럽분자생물학 연구소(European Molecular Biology Laboratory) 전산 생물학자인 볼프강 후버(Wolfgang Huber)는 “그래도 오픈소스 소프트웨어는 과학에 이바지하고 있다”며, “연구팀이 오픈소스 소프트웨어를 공개할 때 지원 메뉴얼 및 FAQ를 준비하면 된다. 물론 쉬운 일이 아니지만, 나는 이런 일이 재미있다”고 말했다.

■ 개발자 측면 

소프트웨어 개발을 하는 과학자들에게 오픈 소스 소프트웨어 공개는 고생 끝이 아닌 시작이다. 따라서 아예 전담 엔지니어를 고용하는 경우도 있다. 

하지만, 오픈소스 소프트웨어에 대한 작업 대부분은 자원 봉사자들에 의해 수행되고 있다. 뉴욕 콜드스프링하버 연구소 시벨(Siepel)은 게놈 연구를 위한 비교 분석 도구 ‘PHAST’이라는 소프트웨어를 만들고 있다. 하지만, 그는 “PHAST 기술 지원을 스스로 자정 이후까지 하고 있다”고 말했다. 

이처럼 세심한 코딩 및 지원에 많은 노력이 필요하다. 하지만, 뉴욕주 컬럼비아 대학 기계학습 과학자인 안드레아스 뮐러(Andreas Mueller)는 “오랫동안 애용되는 소프트웨어는 엔지니어링 방법과 문서는 필수적이다”고 말했다. 예를 들면 ‘트래비스CI(TravisCI)’ 등을 이용한 지속적인 통합과 깃(Git)과 같은 분산 소스 버전 관리 시스템(Distributed VCS)이다. 

지속적인 통합은 개발자가 자신의 코드를 변경할 때마다 그것이 작동하는지 또는 깨졌는지를 알려주는 개발 방법론으로 버그의 발견이 쉬워진다.

버전 관리는 만일 최신 버전에서 치명적인 버그가 발견될 때 이전 버전으로 되돌릴 수 있도록 소스 코드의 변경 사항을 기록하는 시스템이다. 따라서 지속적인 통합 및 버전 관리를 채용하는 것으로, 100% 시간을 절약할 수 있다.

캘리포니아대학교 버클리캠퍼스(University of California, Berkeley) 전산 생물학자이자 가장 유명한 파이썬 기계학습 라이브러리 중 하나인 'Scikit-Learn'의 공동 개발자 넬 바로쿠아스(Nelle Varoquaux)는 “소프트웨어의 성능보다 코드의 가독성에 중점을 두도록 권장하고 있다”며, 왜냐하면 “소프트웨어 개발에는 버그가 발생하는 것은 피할수 없기 때문에 쉽게 찾을수 있는 것이 무엇보다 중요하다”는 것이다. 

또한 유럽분자생물학 연구소 후버는 “사용자와 상호 작용은 이메일이 아니라, 스택 오버플로우(Stack Overflow)와 같은 개발자 커뮤니티 형식을 과학계에서 실시하는 것이 최고”라고 권유했다. 질문과 답변이 널리 공개되는 것 자체가 FAQ의 역할이기 때문이다. 또한 질문이 많은 사람에게 읽혀지는 것은 사용자에게 사려 깊은 질문을 하는 심리가 작동한다는 것이다.

후버는 개인 홈페이지나 깃허브(GitHub)가 아닌 R로 작성된 생물학 소프트웨어 아카이브인 CRAN(종합 R 아카이브 네트워크) 또는 유전체학과 분자생물학 소프트웨어 아카이브 바이오컨덕터(Bioconductor)와 같은 저장소에 소프트웨어를 공개 할 것을 권장한다. 

이러한 저장소는 큐레이터이며, 과학 저널처럼 규칙 및 필수 구성요소에 대한 지침을 제공한다. 또 CRAN과 Bioconductor는 여러 플랫폼에서 테스트 및 지속적인 통합을 제공하며, 강력하고 사용하기 쉬운 설치 프로그램을 제공한다.

오픈소스 소프트웨어 개발에 많은 돈과 시간이 필요하다. 따라서 고생은 필수다. 하지만 그에 걸 맞는 가치와 비전 때문에 개발에 참여함으로써 소프트웨어는 더욱더 가치 있게 된다, 이처럼 오픈소스 소프트웨어의 개발에 노력하는 과학자들의 노력이 과학의 발전에 기여하고 있는 것이다. (출처: 네이처, How to support open-source software and stay sane).

김들풀 기자 itnews@