Semantic Versioning

Eunbin Park·2023년 4월 25일
0

원문


머릿말

유의적 버전 원문 발췌

유의적 버전은 혁신적인 아이디어가 아니다. 사실, 이미 이와 비슷한 방식으로 버전을 정해서 쓰고 있었을 수 있다.
문제는 이와 "비슷한" 방식으로는 충분치 않다는 점이다.
어떠한 형태로 정식 명세를 정해서 따르지 않는다면, 버전 번호는 의존성 관리에서 무의미하다.
이상의 아이디어에 이름을 정하고 명시적인 정의를 내림으로써, 소프트웨어 사용자에게 제작자의 의도를 전달하기 쉬워진다.
의도가 명확해야만, (너무 지나치지는 않은) 융통성 있는 의존성 명세를 만들 수 있다.
유의적 버전을 사용함으로써 의존하는 패키지들의 새 버전들과 씨름하지 않고, 시간 낭비와 소란 없이 패키지를 공개하고 업그레이드할 수 있다.
Github 공동 창업자 Tom Preston-Werner 는 이런 문제를 해결하기 위해 Semantic Versioning 을 제안하였다.

Semantic Versioning

영어로는 Major, Minor, Patches 라고 명명되고, 국내에서는 주(主), 부(部), 수(修) 라고 불린다.

모든 버전은 숫자로 이루어지며, 업데이트는 해당 위치의 숫자의 증가로 알린다.

  • {The Major Version}: 기존 버전과의 비호환 및 API 변경
    • 메소드 제거, 이전 버전과는 호환되지 않는 버그 수정 등 기존 API 동작 변경 포함
    • 하위 호환되지 않는 변화 시 증가
  • {The Minor Version}: 기존 버전과의 호환 및 새 기능 추가
    • 다른 API를 변경하지 않고 새 메소드나 타입을 추가
  • {The Patch Version}: 기존 버전과의 호환 및 자잘한 버그 수정

주의사항

자세한 사항은 유의적 버전 2.0.0-ko2 에서 확인할 수 있다.

  • 모든 버전은 1씩 증가하며, 특정 버전이 올라가면 하위 버전은 0으로 초기화되어야 한다.
    • 보통 버전 번호는 반드시 X.Y.Z의 형태로 하고, X, Y, Z는 각각 자연수(음이 아닌 정수)이고, 절대로 0이 앞에 붙어서는 안 된다.
    • X는 주(主)버전 번호이고, Y는 부(部)버전 번호이며, Z는 수(修)버전 번호이다. 각각은 반드시 증가하는 수여야 한다. 예: 1.9.0 -> 1.10.1 -> 1.11.0.
  • 버전명 공개 이후로는 절대로 내용 수정이 이루어지면 안 되며, 수정사항이 생기면 새로운 버전으로 공개되어야한다
  • 0.Y.Z 버전은 초기 개발을 뜻하며 언제든 변경될 수 있다
    • 초기 개발 단계에 0.y.z 버전 관리의 가장 간단한 방법은 최초 개발 배포를 0.1.0으로 하고, 이후 배포마다 부버전을 올리는 것이다.
    • 이 API는 안정판으로 보지 않는 게 좋다.

4자리?

Chrome 과 같은 몇몇 소프트웨어는 4자릿수인 경우도 있는데, 이럴 경우는 가장 마지막 자릿수는 추가 메타데이터를 지칭한다.

Examples

사실 우리는 알고있다. 각 숫자가 어떤 의미를 말하는 지 정확히 몰랐을 뿐 !
지금 연구실 개인 서버는 반드시 우분투를 설치하는데, 이때 무슨 버전을 깔 건지 고민을 한다.
22.04를 깔 거냐… 20.04는 예전에 사용했는데… 라떼는 16.04를 썼다 이말이야…. 등등…
우분투도 당연하게도 Semantic Versioning 규율을 따른다. 버전 명명 방식을 연도 및 월로 사용할 뿐이다

그래서 우분투 릴리즈 시기를 버전을 보고 바로 알 수 있다.

재미있는 버저닝

안드로이드

필자가 마지막으로 갤럭시를 썼을 때가 … 아이스크림 샌드위치였다
사실 메이저 버전의 증가와 코드네임이 일치하지는 않지만, 이런 경우도 있다

Eclipse

얘도 코드네임… 뭐 애칭이 있다.
초창기는 목성의 위성 혹은 이와 관련된 인물을 채용했다고 한다. 이후로는 갈릴레오 갈릴레이의 이름을 따왔다고~
이후로는 천문학 네이밍… 원자론 네이밍… 등등이 있다 !

  • 연도별 네이밍
    • Callisto : 2006년
    • Europa : 2007년
    • Ganymede : 2008년
    • Galileo : 2009년
    • Helios : 2010년
    • Indigo : 2011년
    • Juno : 2012년
    • Kepler : 2013년
    • Luna : 2014년
    • Mars : 2015년
    • Neon : 2016년
    • Oxygen : 2017년
    • Photon : 2018년

BLAG Linux and GNU

BLAG Linux는 엄청 큰 버전 번호를 제공한다. 매우 상남자스럽다.
메이저 릴리즈에는 50000, 60000의 숫자를 사용하며, 마이너 릴리즈는 숫자를 1씩 증가한다. (50001, 50002)
2014년에는 200000 버전이 릴리즈 되었다고 합니다.
특이하게 알파 및 베타 릴리즈는 주 릴리즈보다 약간 적은 번호를 사용한다고 한다.

  • 20000의 알파 1 - 19999.00071
  • 30000의 베타 2 - 29999.50000

0개의 댓글