티스토리 뷰


Semantic Versioning(이하 Semver)은 Github 창업자인 톰 프레스턴-베르너(Tom Preston-Werner)가 작성한 버전 관리 방법으로 

현재 많은 오픈소스들이 버전관리를 SemVer로 버전관리를 하고있다.

(Bower / NPM 패키지들도 마찬가지)


SemVer로 인한 장점으로는 개발자가 버저닝에 대한 명확한 기준을 통하여 버전만으로도 외부 라이브러리들을 도입이 가능하며

버저닝에 대한 고민을 덜어준다는 장점도 있습니다.


SemVer를 요약하자면 위에 그림으로 표현이 가능하다.


요약


- 기존 버전과 호환되지 않게 API가 바뀌면 “Major 버전”을 올리고,

- 기존 버전과 호환되면서 새로운 기능을 추가할 때는 “Minor 버전”을 올리고,

- 기존 버전과 호환되면서 버그를 수정한 것이라면 “Patch 버전”을 올린다.


Jqeury로 예시를 들겠다.(2016-10-26일 기준)


Jquery는 현재 버전이 1.x.x 버전과 2.x.x 버전과 3.x.x 버전이 존재하는데

1.x 버전에서 2.x로 변경되면서 기존 서비스되던 API의 호환이 안되어 Major 버전을 올려 2.x으로 서비스를 하기 시작했으며

기존 1.12.x 버전은 이후 patch만 진행


최근 3.x버전이 정식 배포가 되었는데 마찬가지고 2.2.x 버전도 앞으로는 patch만 진행한다고함


가장 큰 문제는 역시 브라우져 호환문제이다보니 1.x에서만 현재 IE6~8이 지원이 된다.

그래서 대부분 개발자들은 jquery를 Major 버전을 확인해서 다운로드 받거나 패키지를 받아 사용중인 상황이다.


만약 SemVer가 없이 각 라이브러리마다 버전 표기 기준이 달랐다면 이거 또한 개발자들에게 학습곡선이 되지 않나 싶다.

새로운 체계는 아니지만 이미 있던 체계를 정리하는 것 SemVer가 지향하는게 아닐까 싶다.

댓글