초보 오픈소스 메인테이너의 노가다

Jinhwan Kim
4 min readDec 10, 2020
멍! 멍!

제가 대학원시절에 만든 작업물들은 다음과 같은 패턴이 있었습니다.

  • 유전체 데이터를 통계 기법을 사용하여 분석한다.
  • 분석한 결과를 shiny로 보여준다.

특히 저는 network analysis .. 까진 아니지만 그래도 해당 내용을 많이 사용 / 응용했습니다.

이를 위해서, 연구 결과와 별개로 아예 제가 쓰기 위한 목적으로 network를 그려낼 수 있는 라이브러리를 만든 적이 있는데요. 어쩌다보니 CRAN에까지 올렸습니다.

진짜 저만 쓸라고 만든건데 이만큼 쓰일줄은 몰랐습니다.

https://cranlogs.r-pkg.org/badges/grand-total/shinyCyJS

아무튼, 최근 shinyCyJS 에 issue가 하나 올라왔습니다.

네트워크를 그릴때 data.frame상에서 한꺼번에 node / edge를 만들 수 있는 기능을 만들었는데, 해당 기능에서 오류가 생긴다는 것이었습니다.

솔직히 이슈를 무시하고 싶은 마음이 안든 건 아닙니다만,
나름 애정을 가진 작업물이기 때문에 지금 당장은 그렇고 날 잡아서 봐야지 라는 생각만 열흘 정도 했던 것 같습니다.

다행히, 오늘은 (12/10) 회사 창립기념일이라서… 시간이 났고

최근에 관심을 두고 하고 있는 사이드 프로젝트가 이런 network analysis 에 크게 연관이 되어있다보니… 얼씨구나 하고 작업을 할 수 있었습니다.

고쳤더니 이런 걸 그렸습니다.

에러의 원인을 길게 말해도 재미 없을테니 간단히 요약하자면, 입력되는 파라미터의 타입에 따라서 함수로 다르게 넘겼어야 하는데 일괄적으로 문자열로 취급해서 넘겼기 때문에 해당 에러가 생겼던 것입니다.

가령 edge를 그리기 위해

source : Node1
target : Node2
color : #00b894
width : 3
linetype : dashed

와 같은 형태가 반복된 데이터프레임을 사용하려고 한다면

buildEdge(‘Node1’, ‘Node2’, ‘#00b894’, 3, ‘dashed’) 라는 기능을 통해 edge object를 만들어내야 했는데

멍청하게 buildEdge(‘Node1’, ‘Node2’, ‘#00b894’, ‘3’, ‘dashed’) 로 처리를 해버려서 에러가 났던 것입니다.

물론 엄청 간단하게 말했지만, 이 내용을 찾기 위해서 수백줄짜리 스파게티코드를 뒤져야 했습니다.

오랜만에 확인해보니, 이 라이브러리의 기반이 되는 라이브러리 cytoscape.js 의 버전이 벌써 3.17.0까지 올라갔습니다.

처음 만들땐 3.4.2버전을 기반으로 만들었고, 올 초에 한 차례 3.13.0로 올렸는데 업데이트 / 기능 추가를 할 생각을 하니 기대반 걱정반이긴 합니다.

오픈소스는 재단에서 관리를 하는게 맞는 것 같기도 하고…

아무튼, 이 내용을 바탕으로 한 사이드 프로젝트의 내용과 결과를 공유 할 수 있을 것 같습니다 (언젠간…?)

다른 모든 오픈소스 프로젝트 메인테이너들에게 다시 한번 따봉을 드리며…

--

--

No responses yet