Skip to content

버전 관리

krikit edited this page Dec 6, 2018 · 3 revisions

Semantic Versioning

khaiii는 Semantic Versioning을 따를 것입니다. API나 리소스의 호환성이 깨지는 경우 major 버전이 올라가게 됩니다. 라이브러리도 major 버전으로 soname을 생성합니다.

그러나, 초기 0.x대 버전에서는 minor 버전이 올라가더라도 호환성이 깨지는 상황이 발생할 수 있는 점을 양해해 주시기 바랍니다. 추후 1.0 버전이 안정적으로 정착되고 나면, 정확히 semantic versioning 원칙에 따라 버전을 부여할 것입니다.

로드맵과 변경 기록

master 브랜치는 버전이 명시된 안정적인 코드를 지향합니다. 그러기 위해서는 버전에 따른 로드맵과 변경 기록(change log)을 통해 체계적으로 이슈를 관리할 필요가 있습니다. 사용자는 자신이 등록한 이슈가 어느 버전에 배포될 것인지 로드맵을 통해 예상이 가능하고, 또한 본인이 관심있는 이슈가 해결된 버전이 어떤 것인지 변경 로그를 통해 확인할 수 있습니다.

그러나 GitHub의 이슈 트래킹 시스템에는 이러한 버전 태깅 기능이 없습니다. 이슈에 있는 "Milestone" 기능이 로드맵 기능을 할 수 있을 것으로 생각하는데요, 이 부분에 대해서는 좀 더 알아보고 적용해 보도록 하겠습니다.

등록된 이슈들 중에 버전 관리가 필요한 경우 마일스톤으로 버전을 태깅합니다. 따라서 개발중인 버전의 로드맵은 해당 마일스톤에 포함된 이슈 목록이 됩니다.

버전이 배포되면(develop 브랜치에서 master 브랜치로 태깅과 함께 머지 되면) 해당 마일스톤을 닫습니다. 따라서 배포된(닫힌 마일스톤의) 버전의 변경 기록은 해당 마일스톤으로 태깅된 완료된 이슈들이 됩니다.

프로젝트

프로젝트를 이용하여 버전을 관리하는 방식은 "Milestone" 기능으로 더욱 편리하고 충분히 가능하므로 폐기합니다.

GitHub의 프로젝트 이름을 앞으로 배포할 버전으로 명명하고, 이를 통해 로드맵과 변경 기록을 관리해 보려고 합니다. 즉, 어떤 이슈가 "v0.2"라는 프로젝트에 포함되었다면, 이 이슈는 0.2 버전에 적용(수정)되어 배포될 예정임을 말합니다.

프로젝트는 Kanban 보드로 관리될텐데요, 바로 "To Do", "In Progress", "Done" 목록입니다. "Done" 목록의 이슈들이 바로 그 버전의 변경 기록이 된다고 생각하시면 됩니다.

해당 버전이 배포되면 프로젝트를 닫고, 만약 완료되지 않은 이슈가 있다면 다음 버전으로 이동하게 됩니다.