오픈 소스는 한 사람임
(opensourcesecurity.io)- 최근 보도에서 러시아 개발자가 만든 오픈 소스 소프트웨어 사용에 대한 비판이 제기됨
- 실제로 거의 모든 오픈 소스 프로젝트의 대다수가 단 한 명의 개인 유지관리자에 의해 운영 중임
- NPM뿐 아니라 다양한 생태계에서도 단일 유지관리자가 인기 있는 패키지를 관리하는 사례가 매우 많음
- 이런 구조의 문제는 유지관리자 한 명의 과도한 부담 및 공급망 리스크임
- 문제의 본질은 국적이 아니라, 현실적으로 부족한 자원과 지원임
서론: 오픈 소스와 최근 논쟁
- The Register에서 러시아 개발자가 만든 오픈 소스 유틸리티 사용에 대해 미국 국방부 의존성을 문제 삼는 기사가 보도됨
- 해당 오픈 소스 개발자가 부당한 비난을 받고 있는 상황임
- 기사 내용은 오픈 소스 현실을 오해한 것으로, 이런 접근 방식의 한계를 지적함
오픈 소스의 현실: '한 사람'의 구조
- 데이터에 따르면, 거의 대부분의 오픈 소스 프로젝트는 한 명이 관리하는 형태임
-
ecosyste.ms 프로젝트에서는 약 1,180만 개 오픈 소스 프로젝트가 데이터로 집계되고 있음
- 이 중 약 700만 개가 단일 유지관리자임
- 나머지 약 400만 개 프로젝트는 유지관리자 수 불명이나, 상당수는 역시 한 명일 것으로 추정됨
- 극소수의 프로젝트만이 수백 명의 유지관리자가 있음
인기 프로젝트도 예외 없음
- 많은 사람들이 "중요한 오픈 소스나 인기 프로젝트는 여러 명이 관리할 것"이라 생각하지만, 실제로 NPM 등 주요 생태계도 다르지 않음
- NPM 생태계 내 400만 개가 넘는 단일 유지관리자 프로젝트가 존재함
- 월 100만 회 이상 다운로드되는 NPM 패키지 중에서도, 약 절반이 단일 유지관리자가 운영함
- 다운로드 수를 10억 회로 높이면 일부 차이가 있으나, 여전히 유지관리자 1인 패키지 존재
- NPM 내 400만 단일 유지관리자 프로젝트를 운영하는 실제 인원은 약 90만 명임 (즉, 1인이 여러 프로젝트를 책임지는 구조)
문제의 본질: 국가가 아니라 리소스 부족
- 오픈 소스의 경제적 규모는 수 조 달러에 달하는 기반임 (Harvard 연구 기준, 8.8조 달러)
- 단일 유지관리자 프로젝트 대부분은 자원이 부족하며, 공급망 위험이 존재함
- 최대 리스크는 국가가 아니라, 과도하게 일하고 제대로 보상받지 못하는 '한 명의 유지관리자'임
- 언론 등이 개인 유지관리자를 표적으로 삼는 것은 해결책이 아님
결론 및 액션 포인트
- 현 문제의 원인은 단일 유지관리자라는 구조에 있으며, 국가에 초점을 맞추는 것은 무의미함
- 개인 유지관리자를 악마화하거나 탐지하는 것은 해결책이 아님
- 이 문제는 복잡하여 즉각적인 해법이 부재함
- 관련 논의는 Hobbyist Maintainers with Thomas DePierre 팟캐스트에서도 다뤄진 바 있음
- 단일 유지관리자를 지목해 비난하는 대신, 구조적 문제와 지원 방안을 고민할 필요 있음
Hacker News 의견
-
소프트웨어 커뮤니티에서 이슈에 대한 오해가 많은 느낌임, 실제로 공급망 리스크는 소프트웨어나 엔지니어링 문제라기보다는 거버넌스 문제라는 생각임
누가 나쁜 의도가 없어도 프로젝트에 공급망 리스크가 생기고, 공급망 리스크를 평가하는 사람마다 보안 관점과 기준이 다름
DoD(미 국방부)는 일반 개발자와 완전히 다른 관점으로 리스크를 보며, 많은 1인 프로젝트는 단지 담당 인원이 한 명이기 때문에 리스크가 됨
‘버스 팩터’가 1인 경우, 그 자체가 공급망 리스크임
대부분 사람들은 패키지를 고르면서 전쟁 상황까지는 생각하지 않지만, 군은 전쟁을 염두에 둘 수 있음
전쟁이 발생하면 평소에는 자율적으로 관리되는 오픈소스 프로젝트도 급격히 상황이 바뀔 수 있음
실제로 많은 나라가 전시에 법으로 민간 기업이나 개인 프로젝트의 협조를 요구하기 때문에, 이런 일까지 보안 리스크로 계산하는 곳(DoD 등)이 있음- 여러분, 다 함께 외쳐줬으면 함: 패키지는 꼭 벤더링 하길! 벤더링 하세요!
- 그런데도 "1인 개발자도 억만장자 소프트웨어 회사를 곧 만들 수 있다" 같은 과대광고가 계속되고 있음에 씁쓸함
- DoD라면 해당 패키지의 모든 코드를 일일이 읽고, 업데이트를 잠그고, 필요하면 직접 패치할 준비가 안 되었다면 아예 쓰지 않았을 거라 생각함
전쟁 상황에서 "우리가 전혀 신뢰하지 않는 다른 한 명이라도 있었으면 좋았을 텐데"라는 식으로 운영하지 않을 것임
-
NPM에 400만 개의 1인 프로젝트가 있고, 90만 명 정도가 그 프로젝트들을 관리한다는 데이터가 있었는데, 이게 정말 중요한 포인트였나 궁금했음
- 명확하게 언급되진 않았지만, 아마 이런 의미로 보임
즉, 오픈소스의 경제적 가치(하버드는 8.8조 달러로 추정)를 만들어내는 게 대부분 "1인 프로젝트"이고, 그 중 누구도 제대로 된 리소스를 지원받지 못함
공급망 리스크 이야기에서 정말 위험한 건, 저임금-과로에 시달리는 1인 유지보수자임
그 사람이 어느 나라에서 왔는지는 사실 그다지 중요한 게 아니라고 봄
- 명확하게 언급되진 않았지만, 아마 이런 의미로 보임
-
1인 유지보수자가 갑자기 사고를 당하거나 프로젝트를 그만두면 어떻게 되는지, 이에 대한 통계가 있을지 궁금함
이렇게 데이터가 많으면 연구해볼 만할 것 같음
새로운 개발자가 프로젝트를 이어 받는지, 비슷한 다른 프로젝트로 대체되는지, 아니면 완전히 사라지는지 알고 싶음- 상황에 따라 다름
실제로는 버스 사고보다 ‘관리자가 흥미를 잃거나 시간이 부족해져서 손을 떼는 경우’가 더 흔함
이럴 때 자주 생기는 시나리오는- 누군가 포크를 떠서 결국 그 포크가 원본을 대체하는 경우
- 같은 역할을 하는 새로운 프로젝트가 인기를 얻어 기존 프로젝트를 대체하는 경우
- 원래 유지보수자가 다른 사람에게 프로젝트 관리를 넘기는 경우
- 아무도 관리 안 해도 계속 쓰이고, 문제 생기면 각자 포크해서 해결하지만, 그 포크들이 주요 트렌드가 되지는 않는 경우
오픈소스의 강점은 제작자가 사라지거나 이상해지거나 라이선스를 바꿔도, 누군가는 포크해서 지켜나갈 수 있다는 것임
반면 상용 소프트웨어는 제작자가 회사든 개인이든 없어지거나 내용을 바꾸면 그냥 끝임
그나마 대체 제품을 찾아야 함
- 이런 인기 있는 오픈소스 라이브러리/툴/앱/사이트가 한 관리자로부터 다른 관리자로 넘어가는 과정을 다루는 에피소드 시리즈가 있다면 꼭 보고 싶음
그래서 내가 넷플릭스 운영 안 하는 이유이기도 함 - 내 경험상 세 가지 경우 모두 실제로 봤음
결국 사용자 수, 코드 베이스의 복잡도, 대체재 유무에 따라 달라지는 문제임 - 가장 비슷한 예시로는 Hans Reiser/Reiserfs가 떠오름
단순히 "버스에 치인" 것보다 훨씬 묘한 스토리이고, 결국 그 프로젝트는 소멸함 - 사람들이 간과하는 게, 코드가 오픈소스라면 시간은 걸려도 최악의 경우 언제든 포크할 수 있음을 강조함
- 상황에 따라 다름
-
두 명 이상이 관리하는 프로젝트조차, 실제 커밋의 대부분은 결국 한 명이 담당하는 경우가 대부분임
- 그래서 나는 내 개인 웹사이트에 11ty 사용을 피하고 Jekyll을 선택했음
관련 링크: https://github.com/11ty/eleventy/graphs/contributors
- 그래서 나는 내 개인 웹사이트에 11ty 사용을 피하고 Jekyll을 선택했음
-
활동성 체크만 했어도, 전체 프로젝트의 절반이 유지보수자가 0명이라는 걸 바로 알 수 있었을 텐데 아쉬움
- 소프트웨어가 한 번 "완벽해졌다"고 느껴지면 더 이상 유지보수가 필요 없는 경우도 있음
청소나 튜닝, 보정도 필요 없이 그냥 둬도 된다는 뜻임
오히려 업데이트(갱신)가 문제지, 프로젝트 자체의 문제가 아닌 경우도 많음
- 소프트웨어가 한 번 "완벽해졌다"고 느껴지면 더 이상 유지보수가 필요 없는 경우도 있음
-
DoD가 node를 쓴다는 사실이 더 걱정스러움
npm 같은 플랫폼이 공격 표면적이 너무 크다는 불안감이 있음- 왜 그런가 하는 의문이 생김
DoD는 세계에서 가장 큰 조직 중 하나라서, 뉴스레터 발송이나 보이스카우트 기지 투어 예약용 웹페이지 같은 업무도 많음
그런 데는 node를 써도 상관 없다고 봄
이런 시스템들은 미사일 발사 같은 주요 시스템과 별개로 운영되고, 단순히 행사 신청 페이지가 훼손돼도 별 문제 아님 - DoD는 규모가 워낙 크다보니 거의 모든 주요 플랫폼을 다 쓸 것 같음
- 왜 그런가 하는 의문이 생김
-
많은 1인 GitHub 프로젝트가 사실 "hello world" 같은 개인 실험이나 장난에 불과하다고 생각함
npm이 어떤지 모르겠지만, PyPI에도 비슷한 예시가 넘침
직접 ‘browse projects’를 눌러봤더니 이런 게 나옴: https://pypi.org/project/helloworld-eduardo/
정말 아무리 취해도 이런 걸 제품에 쓸 생각하는 사람은 없을 것임 -
DoD는 무료로 뭔가를 얻을 수 있으면, 모두에게 "이건 다 같이 이득 본다"라고 설득해서 결국은 돈 주고 외주업체에 맡기는 데 굉장히 능함
- 트로이의 목마 사건을 떠올리면, 공짜라는 게 항상 좋은 건 아니라는 거임
-
"1인 관리자가 10억 회 이상 다운로드된 패키지"가 있다고 했는데, 그게 뭘 말하는 건지 궁금함
-
Linus라는 사람이 만든 작업에 대해 괜찮은 얘기를 많이 들었고, 실제로 많이 사용해본 것 같음
그가 러시아와 국경을 맞대고 있는 나라 출신이라, 이런 점도 신경 써야 하나 싶은 의문이 들기도 함
오픈소스 개발을 수십 년 해왔는데, 거의 혼자 했거나 가끔 자원봉사팀을 구성했음
자원봉사팀으로 일해본 사람은 알겠지만, 정말 쉽지 않음
물론 절대 불가능한 건 아니지만, 우리가 생각하는 것만큼 흔하게 잘 되진 않음
잘 될 때는 주로 "BDFL(선의의 독재자)"가 있거나, 모두가 한 목표에 따라 움직이는 경우였음
내 경우는 거의 후자의 형태였음- (오프토픽) Linus의 부모님도 정치적으로 활동적이었고, Linus 본인도 어린 시절 공산주의 소년단(스카우트 비슷한 조직) 활동을 했다고 함
그의 아버지는 모스크바에서 몇 년간 지낸 적도 있음 - Linux는 대규모 유지보수자와 지원이 있는 프로젝트라, Linus 혼자 개발하는 1인 프로젝트와는 전혀 다름
- (오프토픽) Linus의 부모님도 정치적으로 활동적이었고, Linus 본인도 어린 시절 공산주의 소년단(스카우트 비슷한 조직) 활동을 했다고 함