기타 Lobsters · 21시간 전

"시맨틱 버저닝(SemVer)은 거짓말이다" 유명 오픈소스 개발자의 일침

핵심 요약
  • 유명 오픈소스 개발자가 시맨틱 버저닝이 현실 소프트웨어의 복잡한 변경 사항을 단 하나의 숫자로 무리하게 압축하려 한다며 비판했습니다.
  • Node, Python, Rails 등 주요 프로젝트조차 엄격하게 지키지 않으며 개발자들에게 '안전한 자동 업데이트'라는 잘못된 환상을 준다고 지적했습니다.
  • 버전 숫자에만 의존해 맹목적으로 업데이트하기보다 직접 체인지로그를 확인하고 관리하는 것이 책임감 있는 방식이라고 조언했습니다.
요약 유명 오픈소스 개발자 제레미 애슈케너스(Jeremy Ashkenas)가 깃허브 Gist를 통해 시맨틱 버저닝(SemVer) 체계에 대한 비판적인 견해를 밝혔습니다. 과거 소프트웨어 역사에서 버전 번호는 사람이 보기에 프로젝트가 얼마나 발전했고 큰 변화가 있었는지를 직관적으로 나타내는 기준(메이저, 마이너, 패치)이었으나, 시맨틱 버저닝은 인간적 이해보다 기계적이고 규칙 중심적인 판단을 강요하고 있다고 지적했습니다. 글쓴이는 단 하나의 숫자에 변경의 성격, 영향을 받는 사용자 비율(1%인지, 10%인지), 코드 수정의 난이도 등 방대한 정보를 모두 압축하는 것은 불가능하다고 주장합니다. 예를 들어 1%의 소수 사용자에게만 영향을 주거나 거의 쓰이지 않는 비인기 기능이 변경되어도 무조건 '메이저 버전'을 올려야 하는 비효율이 발생하며, 이는 오히려 사소한 변경 사항이 끊임없이 발생하는 현실적인 웹 생태계와 맞지 않는다는 것입니다. 또한 그는 시맨틱 버저닝이 개발자들에게 '신경 쓰지 않고 편하게 의존성을 업데이트할 수 있다'는 거짓 약속을 심어주고 있다고 비판했습니다. 실제로 Node, Rails, Python, Ruby, 심지어 npm 자체도 시맨틱 버저닝을 온전히 따르지 않고 있으며, Node처럼 프로덕션에서 널리 쓰이면서도 수년 동안 0.x.x 버전에 머무는 것은 사실상 시맨틱 버저닝을 쓰지 않는 것과 다름없다고 꼬집었습니다. 결론적으로 그는 버전 번호 하나만 믿고 맹목적으로 라이브러리를 업데이트하기보다는, 가끔 5분에서 10분 정도 시간을 내어 변경 내역(체인지로그)을 확인하고 필요한 수정을 거치는 것이 책임감 있는 업그레이드 방식이라고 강조했습니다. 코드 간의 호환성을 결정짓는 체계로서 현재의 SemVer는 매우 불완전하며, 차라리 텍스트 형태의 체인지로그나 타입 시그니처 매칭 등 더 나은 호환성 판별 방식이 필요하다고 덧붙였습니다.
Sponsored · 광고