최근 software version을 살펴보면 1.x 버전을 넘어서는 것들을 보기 힘들다.
꼰대 아재가 알고 있는 기존 상식으로
외부에 출시하려면 1.0 version을 찍어야 하는데 말이다.
v0.1 이면 `이제 막 만들기 시작했군~`
v0.9 이면 `오~! 이제 곧 출시를 앞두고 있군~`
v1.0 이면 `축하! 축하! 이제 출시했네~`
v1.1 이면 `출시하자마자 발견한 버그들 fix 했구만~`
뭐 이런 식이었다.
하지만, 최근 트렌드는 `zero based versioning scheme` 이다!
software version에 대해서 최근 별 생각이 없었는데,
위 사이트를 발견하고는 `아~!! 그렇군~!!` 하면서 무릎을 탁! 치게 되었다. (너무 아재스러운 표현인가?!)
가장 대표적인 software versioning scheme은 다음의 3가지 방식이다.
① Semantic Versioning (https://semver.org/)
- 전통적인 방식의 versioning scheme 이다.
. 호환되지 않는 API 변경이 있으면 major version 올리고
. 호환되는 기능 추가이면 minor version 올리고
. 버그 수정했으면 patch version 올리는 방식
② Calendar Versioning (https://calver.org/)
- Ubuntu, Unity 등에서 채택한 날짜를 기본으로하는 versioning scheme
. Ubuntu : YY.0M.MICRO (20.04 - 2020년 04월)
. Unity : YYYY.MINOR.MICRO (2020.1.0 - 2020년)
③ Zero(0) based Versioning (https://0ver.org)
- 규칙은 간단하다. 1 버전이 넘어가지 않으면 된다.
. React Native : 0.65.0-rc.4 (6.4년째)
. scikit-learn : 0.24.2 (11.6년째)
최근 유행이 ③번이라는 것은 대부분의 개발자들이 동의할 것이다.
그러면, 대체 왜 0ver(ZeroVer) 방식이 유행을할까?
안타깝게도 위 사이트(https://0ver.org)에서 그 이유를 명시적으로 설명해주지 않는다.
그러면 개인적으로 그 이유를 상상해볼 수 밖에 없는데...
1. 예전에는 완성된 제품을 출시하는 방식으로 software를 생각했지만,
인터넷의 발달로 connected world가 되었기에 언제든 업데이트할 수 있는 환경을 갖췄고
그래서 이제는 software를 완성된 제품으로 바라보기 보다는
버그가 좀 있더라도 일단 출시하고, 문제점을 발견하면
빨리 고쳐서 업데이트 하면 된다고 생각하기 시작했고
그래서 부담스러운 major version 체계보다는 0-based version 체계를 택한 것이 아닐까?!
2. 앞의 맥락과 같은 내용일 수도 있는데,
기존에는 major version 출시를 하나의 큰 마케팅 포인트로 보았고, 하나의 완제품으로 보았기에
자동차 모델 하나를 출시하는 것과 유사하게 여겼고 그렇기에 지속적인 지원을 해줘야 했다.
그렇기에 다음 major version을 출시하게 되었더라도 (새로운 모델 출시)
기존 major version에 대한 지원을 계속 해줘야 하는 어려움이 있었다.
하지만, 0-based version 체계에서는?! 안해줘도 될 것만 같은...
3. version up을 한다는 것의 의미를 생각해봐야 한다.
새로운 기능을 추가하거나, 버그를 고치거나, 보안상 이슈가 있는 것을 해결해 나가는 과정이다.
그렇다면 과거 버전을 유지하는 것이 의미가 있을까?
물론 여러가지 이유로 기존 버전의 필요성이 있을 수는 있겠지만
중요한 것은 latest version 이다.
그렇다면, 기존 version scheme 보다는 0-based version이 오히려 적합하지 않을까?!
재미있는 사이트를 찾게 되어
그냥 이런 저런 생각을 해봤다.
PS. 아! 노파심에서 말하지만 위 홈페이지의 about을 꼭 확인해보기 바란다!!! (0ver 추천 홈페이지가 아니다!!!)
'소프트웨어' 카테고리의 다른 글
Adobe Photoshop Lightroom v1.3 (0) | 2007.11.20 |
---|---|
freemind v0.8.0 (0) | 2006.08.31 |