Yocto 프로젝트는 복잡하고 다양한 구성 요소로 이루어져 있기 때문에, 버전 관리는 매우 중요한 역할을 한다. Yocto 프로젝트는 Git을 주 버전 관리 도구로 사용하며, 커뮤니티의 공헌자들은 다음과 같은 방식으로 프로젝트에 기여할 수 있다.
공헌 방식
Yocto 프로젝트에 기여하려면 먼저 Yocto 프로젝트의 공식 Git 저장소를 포크(fork)하고, 해당 포크된 저장소를 로컬로 복제(clone)해야 한다. 이를 통해 개발자가 자신만의 브랜치(branch)에서 작업을 수행할 수 있다.
브랜치 전략
Yocto 프로젝트는 다양한 브랜치 전략을 사용하여 안정적인 릴리스와 개발을 동시에 수행한다. 주요 브랜치는 다음과 같다.
- master 브랜치: 최신 개발 버전이 포함된 브랜치로, 새로운 기능과 버그 수정이 계속 통합된다.
- 기능 브랜치: 특정 기능 개발을 위한 브랜치로, 기능이 완성되고 테스트가 완료되면 master 브랜치에 병합된다.
- 안정 브랜치(Stable Branch): 특정 릴리스 버전에 대한 유지보수를 담당하는 브랜치이다. 예를 들어,
dunfell
브랜치는 Dunfell 릴리스의 안정 버전을 유지보수한다.
커밋 규칙
Yocto 프로젝트는 엄격한 커밋 메시지 규칙을 따른다. 이는 코드의 추적성과 이해도를 높이는 데 중요한 역할을 한다. 일반적인 커밋 메시지 규칙은 다음과 같다.
- 제목: 변경 사항을 간결하고 명확하게 설명한다.
- 본문: 변경 사항의 이유와 세부 내용을 설명한다.
- 서명:
Signed-off-by
태그를 사용하여 커밋 작성자를 명시한다.
예제 커밋 메시지:
yocto_layer: Fix Python 3.8 compatibility issue
This patch resolves the compatibility issue with Python 3.8 by updating
the relevant dependencies and modifying the codebase to handle new syntax.
Signed-off-by: John Doe <john.doe@example.com>
패치 관리
Yocto 프로젝트는 패치 관리를 위해 메일링 리스트를 사용한다. 커밋된 코드는 메일링 리스트를 통해 검토되며, 승인된 패치는 해당 브랜치에 통합된다. 이를 위해 git send-email
명령어를 사용한다.
패치 제출 예제:
git send-email --to=yocto@yoctoproject.org --subject="PATCH v1 0/1" 0001-Fix-Python-3.8-compatibility-issue.patch
코드 리뷰
Yocto 프로젝트는 코드 품질을 유지하기 위해 엄격한 코드 리뷰 절차를 따른다. 제출된 패치는 다른 개발자들이 코드 리뷰를 통해 검토하며, 피드백이 제공된다. 리뷰 과정에서 발생한 논의는 메일링 리스트에서 투명하게 진행되며, 필요한 수정이 이루어진 후에야 패치가 승인된다.
기여자 가이드라인
Yocto 프로젝트는 신규 기여자를 위한 가이드라인을 제공하며, 이를 통해 프로젝트에 기여하는 방법을 상세히 설명한다. 이 가이드라인은 코드 스타일, 커밋 메시지 규칙 및 패치 제출 방법을 포함한다. 가이드라인을 꼼꼼히 읽고 메시지 규칙을 준수하는 것이 중요하다.
릴리스 사이클
Yocto 프로젝트는 특정 주기를 기반으로 한 릴리스 사이클을 따른다. 일반적으로 Yocto 프로젝트는 6개월 주기로 새로운 릴리스를 제공한다. 이러한 정기적인 릴리스는 사용자가 예측 가능한 방식으로 프로젝트를 업그레이드하고 사용하는 데 도움을 준다.
- 개발 릴리스 (Development releases): 이 릴리스는 새로운 기능과 개선 사항이 포함된 최신 개발 버전을 제공한다. 일반적으로
master
브랜치에서 유지된다. - 안정 릴리스 (Stable releases): 안정 릴리스는 특정 시점의 기능과 버그 수정이 포함된 버전이다. 이러한 릴리스는 장기적인 유지보수가 가능하며, 안정적인 환경이 필요한 프로젝트에서 주로 사용된다.
릴리스 프로세스
새로운 릴리스를 준비하기 위해 Yocto 프로젝트는 여러 단계를 거쳐 안정성과 품질을 보장한다.
- 기능 프리즈 (Feature Freeze): 이후 릴리스까지 새로운 기능 추가가 중지되며, 기존 기능 및 코드는 안정성과 테스트가 집중된다.
- 베타 릴리스 (Beta Release): 초기 베타 버전이 발행되어 커뮤니티가 테스트 및 피드백을 제공할 수 있다.
- 릴리스 후보 (Release Candidate): 릴리스 후보 버전이 발표되어 최종 검토와 지연된 버그 수정이 진행된다.
- 최종 릴리스 (Final Release): 모든 테스트와 리뷰가 완료되면 최종 릴리스가 제공된다.
유지보수와 지원
Yocto 프로젝트는 각각의 안정 릴리스에 대해 일정 기간 동안 유지보수를 제공한다. 유지보수 동안 중요한 버그 수정과 보안 패치가 진행된다. 유지보수 기간은 통상적으로 최종 릴리스 후 1~2년 정도이다. 안정 릴리스가 종료된 이후에도 커뮤니티 지원을 통해 추가적인 패치와 업데이트가 가능할 수 있다.
문서화
Yocto 프로젝트는 포괄적인 문서화를 제공하여 사용자와 개발자가 프로젝트를 쉽게 이해하고 활용할 수 있도록 돕는다. 문서화는 다음과 같은 주요 부분으로 구성된다:
- 사용자 가이드 (User Guide): Yocto 프로젝트 설치 및 기본 사용법을 설명한다.
- 개발자 가이드 (Developer Guide): 개발자가 Yocto 프로젝트에 기여하는 방법과 다양한 개발 툴 사용법을 다룬다.
- 레퍼런스 매뉴얼 (Reference Manual): Yocto 프로젝트의 구성 요소와 내부 동작 방식을 상세히 기술한다.
모든 문서는 웹사이트 및 공식 저장소를 통해 자유롭게 접근할 수 있으며, 커뮤니티의 지속적인 업데이트와 개선을 받는다.