npm unpublish에 제한조건이 생긴 이유
포스트
취소

npm unpublish에 제한조건이 생긴 이유

2016년 3월 22일 수많은 자바스크립트 프로그래머들은 npm ERR! 404 ‘left-pad’ not in the npm registry. 라는 오류를 보게 된다. 당연히 해당 패키지를 들어보지도 못한 사람들은 해당 패키지가 무엇인지 찾기 시작했다. 해당 함수는 11줄의 코드로 이루어져 왼쪽에 특정한 문자를 채워주는 단순한 함수이다. 문제는 React를 포함한 수많은 패키지들이 이 단순한 기능을 직접 구현하지 않고 패키지를 사용했다는 것이다. 해당 오류는 2시간 후 npm에서 해당 패키지를 다시 퍼블리싱하는것으로 해결이 되었다.

해당 패키지가 내려간 이유는 다음과 같았다. 제작자 Koçulu가 kik라는 이름의 패키지를 만들었는데 같은 이름을 가진 캐나다의 메세지 회사에서 해당 패키지의 이름을 변경해달라고 연락을 한 것이다. 거절의 의사를 밝히자 회사에서 법적 조치를 취한다고 하고 Koçulu는 항의의 표시로 퍼블리싱한 모든 패키지를 내려버린 것이다.

이렇게 한 사람의 깃허브 스타 10개를 받은 패키지가 내려가자 전세계 javascript 개발자에게 영향을 끼친 것이다.

자바스크립트의 기본 생태계를 파괴할 수 있기 때문에 npm의 퍼블리싱 취소 규정이 생기게 되었다.

퍼블리시한지 24시간이 지나면 의존된 패키지가 존재하지 않다는 조건 하에 취소가 가능해진다. 의존된 패키지가 존재할 경우 해당 패키지 관리자에게 문의를 해 의존성을 제거해달라고 하거나 패키지의 권한을 넘겨야 한다. 그리고 해당 패키지의 이름은 Security placeholder package로 들어가 동일한 이름을 이용한 악성코드 활용에 이용되지 않도록 처리가 된다.

그 이후 사람들의 요청에 의해 24시간에서 72시간으로 시간이 늘어났고 일부 조건이 생겼다. 많은 사람들이 사용하지 않아야 되기 때문에 저번주의 다운로드수가 300을 넘지 말아야 한다. 다른 소유자의 의견 없이 삭제가 될 수 있기 때문에 주의하는 차원에서 해당 패키지의 소유자는 한명이여야 한다. 라는 규정이 2개 추가되었다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

깃허브 코파일럿 소개 요약

노트