문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 npm (문단 편집) ==== left-pad 사건 ==== [include(틀:문서 가져옴, title=Node.js, version=404, paragraph=7.4)] npmjs.com에 등록된 패키지 하나가 삭제된 것으로 인해 수많은 IT 회사의 업무가 마비된 사건이다. 미국 캘리포니아에 사는 [[https://github.com/azer/|에저 코출루(Azer Koçulu)]]라는 개발자는 자신이 만든 여러 프로그램을 npmjs.com에 올려 공개하고 있었는데, 그 중에는 'kik'이라는 패키지도 있었다. 어느 날, Kik이라는 회사의 변리사가 코출루에게 이메일을 보내, 'kik'이라는 이름에 대한 상표권을 자기 회사가 갖고 있으니 코출루가 만든 패키지의 이름을 바꿔달라고 요청했다. 코출루가 이를 거절하자 해당 직원은 비즈니스라고는 눈꼽만큼도 찾아볼 수 없는 무례한 내용의 답변을 보내 협박했다. > We don’t mean to be a dick about it, but it’s a registered trademark in most countries around the world and if you actually release an open source project called kik, our trademark lawyers are going to be banging on your door and taking down your accounts and stuff like that — and we’d have no choice but to do all that because you have to enforce trademarks or you lose them. > 저희도 재수없게 굴기는 싫지만, 킥은 세계 대부분의 국가에 등록된 저희 상표이니, 만일 같은 이름의 오픈소스 프로젝트를 공개하신다면 저희 상표권 변호사들이 당신 집에 찾아가서 현관문을 두드리고 당신 계정을 삭제하려 할 겁니다. > ---- > [[https://medium.com/@mproberts/a-discussion-about-the-breaking-of-the-internet-3d4d2a83aa4d|출처]] 당연히 협상은 결렬되었고, 이에 Kik은 npm에 중재를 요청했다. 그러자 npm은 Kik의 편을 들어 'kik'이라는 패키지명에 대한 소유권을 Kik에게 넘겨주었다. 분노한 코출루는 npm의 행동에 항의하고자 2016년 3월 22일, 자신이 그동안 npm에 공개했던 273개의 패키지를 모두 삭제했다. 코출루가 삭제한 패키지 중에 '''left-pad'''가 있었다. 이 패키지는 코드가 11줄에 불과한 작은 라이브러리에 불과했다. 그러나 다른 개발자가 제작한 line-numbers라는 패키지가 left-pad를 불러와 쓰고 있었고, 다시 이 line-numbers는 '바벨(babel)'이라는 패키지가 불러와 쓰고 있었다. npm(프로그램)은 이렇게 의존 관계에 있는 패키지를 자동으로 불러와 설치하기 때문에, 바벨을 쓰는 개발자들은 자신도 모르는 사이에 left-pad를 함께 설치하고 있었다. 당연히 left-pad가 삭제되자 바벨 또한 설치가 불가능해졌다. 문제는 바벨은 JavaScript 개발에 반쯤 필수적으로 쓰이는 인기 패키지였다는 것이다. 페이스북, 링크드인, 스포티파이 등 이름난 IT 기업부터 전세계의 수많은 1인 개발자까지 많은 사람들이 바벨을 사용하고 있었다. left-pad가 삭제되자 이들의 업무가 모두 마비되었고, 사람들이 원인을 분석하면서 left-pad 사건이 널리 알려지게 되었다. npm은 예상치 못한 상황에 당황했고, 우선 left-pad를 임시로 복구하여 설치할 수 있게 만들어서 문제를 해결했다. 이후 npm은 사과문을 공개하였으며, 앞으로 똑같은 문제가 발생하지 않도록 공개된 지 24시간이 지난 프로젝트는 소유자가 임의로 삭제할 수 없도록 규정을 변경했다. 한편 바벨의 개발진은 line-numbers를 호출하는 코드를 지우고 필요한 기능을 직접 추가하는 방식으로 문제를 해결했다. kik 대표는 medium에 이메일 내역을 공개하며 코출루에게 올린 부적절한 표현의 메일에 대해 사과글을 올렸으며, 코출루는 kik을 hek로 이름을 변경했다고 한다. 무례한 메일을 보낸 직원에 대해서는 알려진 바가 없다. 이 사건의 의의는 npm의 미흡한 운영 방식이 드러난 것 외에도, npm을 비롯한 JavaScript 생태계의 취약점이 드러났다는 것이다. JavaScript는 다른 프로그래밍 언어에 비해 내장된 API가 부실하기 때문에, 다른 언어라면 표준 라이브러리에서 제공할 법한 기능도 직접 코드를 짜거나 다른 사람이 만든 라이브러리를 가져와 사용해야 한다. 여기에 JavaScript를 많은 사람이 사용한다는 점과, npm에 패키지를 등록하는 것이 쉽다는 점이 맞물려서 비교적 단순한 기능도 직접 구현하기보다는 npm에 공개된 패키지를 설치하는 것이 관습화되었다. 이 때문에 패키지 A가 B를 불러오고, B가 C를 불러오고...하는 식으로 의존 관계가 여러 겹 쌓이다 보니 개발자들은 자신이 어떤 패키지를 설치했는지도 파악하기 어렵게 되었다. 게다가 패키지 하나에 문제가 생기면 여기에 의존하는 수많은 패키지가 영향을 받으니 보안 면에서 취약할 수밖에 없다. 이 문제는 JavaScript가 눈부신 발전을 거듭한 2020년대에도 여전히 JavaScript의 아킬레스건으로 지적받고 있다. [[분류:GitHub]][[분류:오픈 소스 소프트웨어]][[분류:프로젝트 관리 도구]]저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기