본문 바로가기메뉴 바로가기


Weekly Links에서는 지난 한 주, 카카오의 기술 블로그 담당자가 구독하는 기술 뉴스레터들에서 “인간의 눈”으로 선별한 링크들을 짧은 코멘트와 함께 공유합니다.

포함된 뉴스레터 목록은 awesome-tech-newsletters에서 확인하실 수 있습니다.

2016년 4월 첫째주 추천 링크

특집: npm 게이트, 그것이 알고 싶다!

개인적으로 이번 주에 가장 눈에 띄는 소식은 아무래도 npm게이트(a.k.a. leftpad 게이트)가 아닌가 싶습니다. 그래서, 창간 특집(?)으로 npm 게이트의 전말을 파헤쳐 보겠습니다.

다음은 문제의 left-pad 코드(전체!)입니다:

module.exports = leftpad;
function leftpad (str, len, ch) {
  str = String(str);
  var i = -1;
  if (!ch && ch !== 0) ch = ' ';
  len = len - str.length;
  while (++i < len) {
    str = ch + str;
  }
  return str;
}

메신저 플랫폼 회사인 kik이 azer가 개발한 npm 모듈 kik의 이름을 바꾸라고 하면서 사건이 시작됩니다.

  • 3/11 10:20 kik -> azer: kik 모듈 이름의 소유권을 주장하며 azer에게 이름을 바꾸라고 요청.
  • 3/11 10:50 azer -> kik: 거절.
  • 3/11 11:26 kik -> azer: 변호사 언급.
  • 3/11 12:34 azer -> kik: 거절.
  • 3/11 12:42 kik -> npm: 문제 해결 요청.
  • 3/11 12:44 kik -> azer: 보상을 제안.
  • 3/11 12:52 azer -> kik: $30000 제시.
  • 3/11 12:57 kik -> npm: kik은 등록상표이므로 kik 모듈 이름의 소유권을 주장.
  • 3/11 12:59 kik -> npm: azer가 약관을 위반하고 있다고 주장.
  • 3/16 08:42 kik -> npm: 변호사 언급.
  • 3/18 16:39 npm -> kik & azer: kik 모듈의 소유권을 kik으로 넘김.
  • 3/18 17:00 kik -> npm: 감솨~
  • 3/20 14:22 azer -> npm & azer: 유감~ 모든 모듈 삭제 의사 표명.

kik의 무례한 요구, npm의 부적절한 중재, 그리고 azer의 성급한 행동(unpublish)이 결합되어 사건이 커집니다.

  • …(시끌벅적)
  • 3/23 I’ve Just Liberated My Modules – azer가 “본인 소유의 npm 모듈 273개를 내렸다”고 통보. 그 중에 문제의 left-pad가 포함되어 있었음.
  • 3/23 가장 인기있는 npm 모듈 중의 하나인 babel과 atom이 간접적으로 left-pad에 의존성이 걸려 있었음. 수많은 ES6 기반 어플리케이션들이 빌드 안됨. 2.5 시간의 재앙!!
  • 3/23 kik, left-pad, and npm – npm 측의 해명: “우리는 azer의 코드를 훔치지 않았다”, “kik은 좋은 회사다”…
  • 3/23 A discussion about the breaking of the Internet – kik 측의 해명: “우리는 잘못한거 없다”. 자신만만하게 주고받은 메일을 다 공개했으나…
  • 3/25 npmGate — Lessons Learned Again – 변호사를 통해서 으름장을 놓은 kik도 비난하고, 큰 저장소를 운영하면서도 제대로 된 정책도 없고, 제대로 대응도 못한 npm도 비난하고, 그 와중에 은근슬쩍 Sonatype의 Nexus 광고…ㅎ
  • 3/29 changes to npm’s unpublish policy: npm이 후속 조치로 unpublish 정책을 변경. 요약하면, 24시간내에는 본인이 unpublish 가능. 그 이후에는 npm에 메일로 연락. 패키지의 모든 버전이 내려가면 땜빵(placeholder) 패키지로 대체. 땜빵 패키지의 소유권을 획득하려면 npm에 메일로 연락.
  • 4/4 11줄의 코드, 인터넷을 패닉에 빠뜨리다

오픈소스를 생산(기여)하는 측, 사용하는 측, 그리고 이 과정을 중개하는 측이 외부의 도전(?)에 대처하는 방법에 대해서 많은 생각을 하게 만든 사건입니다만… (흠흠) 자세한 설명은 프렌즈의 표정으로 대신합니다.

기술 블로그의 컨텐츠 수급에 어려움 때문에 시작하긴 했는데, 수십개의 뉴스레터에 소개된 수백개의 링크 중에서 몇 개만 선정하는 일이 만만치 않네요. Weekly Links는 쭈욱~~

포함된 뉴스레터 목록은 awesome-tech-newsletters에서 확인하실 수 있습니다.

iolo.fitzowen
iolo.fitzowen
Top Tag
2021
2021-new-krew
Ad Platform
Ad tech
adaptive-hash-index
adt
adtech
agile
agilecoach
ai
algorithm
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
Analyzer
android
angular
anycast
App2App
applicative
Architecture
arena
ast
async
aurora
babel
babel7
Backend
BApp
bgp
big-data
binary
ble
blind-recruitment
block
Block Chain
blockchain
bluetooth
brian
business
Cache
cahtbot
canvasapi
Caver
cch
cd
CDR
ceph
certificate
certification
CF
cgroup
chrome
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codereview
coding
coding test
Collaborative Filtering
competition
Compliance
component
conference
consul
container
contents
contest
contribution
cookie
core-js@3
Corporate Digital Responsibility
couchbase
COVID-19
cpp
Data
data-engineering
DB
deep-learning
Dependency
dependency-graph
desktop
dev
dev-session
dev-track
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
Electron
employeecard
emscripten
eslint
extract-text
Feature List
Featured
Feedback
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
GHC
github
globalpollution
go
Grace Hopper Celebration
graphdb
graphql
Ground X
growth
ha
hadoop
hate speech
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
ICPC Sinchon
id
if kakao
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
javascript web-assembly
JCMM
JIRA
jsconf
jsconfkorea
json
k8s
kafka
kakao
kakao-Career-Boost-Program
kakao-commerce
kakao-games
kakaoarena
kakaobrain
kakaocommerce
kakaocon
kakaoenterprise
kakaok
kakaokey
kakaokrew
kakaomap
kakaopage
kakaotalk
KAS
KCDC
khaiii
Klaytn
Klip
kubernetes
l3dsr
l4
License
links
Linux
load-balancing
MAB
Machine Learning
machine-learning
map
marathon
meetup
melon
mesos
message
Messaging
microservice
Microsoft TypeScript
mm
mobil
mocking
monad
monorepo
ms-office
MSA
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
Nickface
nomad
ocp
olive
onboarding
open
open source
opensource
openstack
OpenWork
OSS
page
parallel
PBA
performance
planning poker
Platform
polyfill
programming-contest
project-structure
pycon
python
quagga
react
reactive-programming
reactor
recap
recommendation
recommendation system
recruitment
redis
redis-keys
redis-scan
related-blind
Renderer
rest
Rome
rubics
ruby
rxjs
s2graph
scala
scalaz
seminar
Serve
server
service
service worker
sharding
shopping
Shuffle Partition
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
summer internship
support
System
talk
talkchannel
tcp
tech
Techtalk
test
thread
Thread-Debugging
time-wait
tmux
Topic Modeling
typescript
Untact
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
WASM
web-cache
web-worker
webapp
webgl
WebSocket
webworkers
weekly
Women Technologists
work
workplatform
개인화 추천
길찾기
라이선스
연관 추천
오픈소스
오픈소스검증
의존성분석
일하는방식
협업
All Tag
2021
2021-new-krew
Ad Platform
Ad tech
adaptive-hash-index
adt
adtech
agile
agilecoach
ai
algorithm
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
Analyzer
android
angular
anycast
App2App
applicative
Architecture
arena
ast
async
aurora
babel
babel7
Backend
BApp
bgp
big-data
binary
ble
blind-recruitment
block
Block Chain
blockchain
bluetooth
brian
business
Cache
cahtbot
canvasapi
Caver
cch
cd
CDR
ceph
certificate
certification
CF
cgroup
chrome
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codereview
coding
coding test
Collaborative Filtering
competition
Compliance
component
conference
consul
container
contents
contest
contribution
cookie
core-js@3
Corporate Digital Responsibility
couchbase
COVID-19
cpp
Data
data-engineering
DB
deep-learning
Dependency
dependency-graph
desktop
dev
dev-session
dev-track
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
Electron
employeecard
emscripten
eslint
extract-text
Feature List
Featured
Feedback
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
GHC
github
globalpollution
go
Grace Hopper Celebration
graphdb
graphql
Ground X
growth
ha
hadoop
hate speech
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
ICPC Sinchon
id
if kakao
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
javascript web-assembly
JCMM
JIRA
jsconf
jsconfkorea
json
k8s
kafka
kakao
kakao-Career-Boost-Program
kakao-commerce
kakao-games
kakaoarena
kakaobrain
kakaocommerce
kakaocon
kakaoenterprise
kakaok
kakaokey
kakaokrew
kakaomap
kakaopage
kakaotalk
KAS
KCDC
khaiii
Klaytn
Klip
kubernetes
l3dsr
l4
License
links
Linux
load-balancing
MAB
Machine Learning
machine-learning
map
marathon
meetup
melon
mesos
message
Messaging
microservice
Microsoft TypeScript
mm
mobil
mocking
monad
monorepo
ms-office
MSA
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
Nickface
nomad
ocp
olive
onboarding
open
open source
opensource
openstack
OpenWork
OSS
page
parallel
PBA
performance
planning poker
Platform
polyfill
programming-contest
project-structure
pycon
python
quagga
react
reactive-programming
reactor
recap
recommendation
recommendation system
recruitment
redis
redis-keys
redis-scan
related-blind
Renderer
rest
Rome
rubics
ruby
rxjs
s2graph
scala
scalaz
seminar
Serve
server
service
service worker
sharding
shopping
Shuffle Partition
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
summer internship
support
System
talk
talkchannel
tcp
tech
Techtalk
test
thread
Thread-Debugging
time-wait
tmux
Topic Modeling
typescript
Untact
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
WASM
web-cache
web-worker
webapp
webgl
WebSocket
webworkers
weekly
Women Technologists
work
workplatform
개인화 추천
길찾기
라이선스
연관 추천
오픈소스
오픈소스검증
의존성분석
일하는방식
협업

위로