Rev's/오픈소스

colors.js와 faker.js 에는 무슨일이 일어났나?

RevFactory 2022. 1. 12. 02:28

colors.js와 faker.js 이슈

오픈소스 개발자 Marak는 최근 자신의 인기 있는 오픈소스인 faker.js는 Repo를 전부 삭제하고, colors.js 에는 무한 루프를 일으킬 수 있는 코드를 업데이트하여 오픈소스계에 큰 파장을 일으켰습니다.
 
faker.js 는 가짜 데이터를 무작위로 생성해주는 오픈소스로 2,500여개의 종속성을 갖고, 주간 다운로드가 250만에 이르는 오픈소스입니다. colors.js 는 로그 등 콘솔에 색상을 입혀주는 오픈소스로 18,000여개의 종속성을 갖고, 주간 다운로드수가 2,500만에 이르는 인기 있는 오픈소스입니다. 두 오픈소스는 주로 테스트 목적으로 사용되는 오픈소스입니다.
 
 
특히 colors의 경우, 테스트 프레임워크로 유명한 karma, jasmin-spec-repoter나 CLI 출력에 많이 쓰이는 prettyjson 등 유명한 오픈소스에서 사용하고 있기도 합니다. 또한 Amazon의 Cloud Development Kit (aws-cdk), Facebook의 Jest , Javascripting 프로젝트 및 Node.js Open CLI Framework를 포함하여 잘 알려진 OSS 프로젝트에도 영향을 주었습니다.



 
colors.js 는 2년전 1.4.0 버전을 릴리즈 이후, 업데이트가 없다가 최근 LIBERTY LIBERTY LIBERTY 출력과 함께 비 아스키 문자를 출력 하는 무한 루프 동작을 추가한 1.4.1 과 1.4.2 버전을 릴리즈했습니다. 이는 colors.js 초기화 구문에 삽입되어 있으며 colors.js 의 새로운 버전을 포함하여 배포하거나 실행시에 문제가 즉시 나타납니다. 이 상황을 미처 알지 못한 많은 개발자들은 서비스를 배포할때 이 문제에 직면하게 되었습니다.
 
 
 

왜 이런일이 일어나게 되었을까?

개발자 Marak는 지난 2020년 11월 지금은 삭제된 fakers.js 저장소에 아래와 같이 자신은 더 이상 500대 포춘기업을 더이상 무료로 지원하지 않을 것이며, 기업은 개발자의 프로젝트를 fork 하거나 6자리 연봉으로 후한 보상을 해야한다는 글을 에 올렸습니다.
 

이 글을 올리기전 그는 사제 폭발물을 제조하다가 자신의 아파트가 화재가 나고 체포된 사건도 있었다고 알려져 있는데, 이후 아파트 화재로 모든 물건을 잃어버리고 간신히 노숙자 생활을 하게되었다고 트윗을 통해 상황을 전하기도 했습니다. 지난 몇 년간 오픈소스에 자신이 들인 노력들을 아무런 보상을 받지 못한채 수 많은 기업들이 사용하는 것에 불만을 표출한 이런 상황이 조금은 이해가 됩니다. 그렇다고 하더라도 그가 faker.js와 colors.js에 가한 행동에는 많은 비난이 존재합니다.
 
 
 

faker.js 6.6.6과 colors.js 1.4.1 버전 문제 조치

faker는 소스 코드가 포함되지 않은 빈 패키지로 6.6.6 버전이 릴리즈 되었으며, 2만건 정도 다운로드가 이뤄졌지만 별다른 조치는 없었습니다.

 
 
colors는 무한 루프 동작이 추가된 1.4.1 이 릴리즈이후 무려 9만건이 넘는 npm 다운로드가 이뤄졌습니다. colors 초기화시 문제가 발생하여 정상적인 서비스 동작에 영향을 주기 때문에 DoS 로 분류되었으며, 현재 해당 버전은 npmjs에서 삭제 처리 되었습니다. (영향 받는 버전 : >= 1.4.1, <= 1.4.2, = 1.4.44-liberty-2)
 
 
 

이번 사건이 남긴 숙제

현재 colors.js 의 Github 에서 문제의 문자열을 남기는 LIBERTY 문구가 포함된 american.js 파일에는 수 많은 개발자들이 찾아와서 코멘트를 남기고 있습니다. Github에서 이렇게 긴 스크롤을 갖는 코멘트 행렬은 처음 봅니다.


 

 
 
 
 
 
오늘날 수 많은 개발자와 기업들이 오픈소스에 의존하고 있지만 그에 대한 댓가에 대해서는 외면한채 Free(자유)를 외치던 오픈소스 대신 지금은 사람들의 인식에는 Free(무료)가 자리잡고 있는지 모르겠습니다. 물론 Marak 가 선택한 이러한 방식은 다른 오픈소스 개발자와 상태계에 악영향을 줄 것이며 잘못된 방법이라고 생각이 듭니다. 우리는 이러한 극단적인 선택이 더 나오기전에 오픈소스 개발자들의 노력과 헌신을 기억해야 할 것이고, 점점 변화되는 오픈소스 생태계를 관심을 갖고 지켜보며 더 나아가 함께 참여해야 하는 대상임을 기억해야 할 것이라 생각합니다.
 
 
참고 링크