# Xenomai 프로젝트 기여 방법

### Xenomai 기여를 위한 준비 사항

Xenomai 프로젝트에 기여하기 위해서는 다음과 같은 준비 사항이 필요하다:

1. **개발 환경 설정**: Xenomai를 빌드하고 테스트하기 위한 개발 환경을 설정한다. 이는 Linux 운영 체제가 기본이며, 필요한 패키지 및 도구들을 설치해야 한다.
2. **소스 코드 이해**: Xenomai의 구조와 작동 방식을 이해하기 위해 소스 코드를 탐색하고 관련 문서를 읽어야 한다.
3. **기여 가이드**: Xenomai 프로젝트에서 제공하는 기여 가이드를 숙지하여 코드 스타일, 커밋 메시지 규칙 등을 이해한다.

### 오류 및 개선 사항 보고

Xenomai 프로젝트에 기여하기 위한 첫 걸음은 오류(Bug) 및 개선 사항(Improvement)을 보고하는 것이다.

#### GitHub 이슈 사용하기

Xenomai 프로젝트는 주로 GitHub의 이슈 트래커를 통해 관리된다. 오류 및 개선 사항을 보고하는 방법은 다음과 같다:

1. **이슈 검색**: 우선 보고하려는 오류나 개선 사항이 이미 보고되었는지 확인한다. 중복된 보고는 관리에 혼란을 초래할 수 있다.
2. **이슈 작성**: 보고하려는 내용이 없다면 새 이슈를 작성한다. 다음 사항들을 포함하여 작성한다:
   * 제목: 간결하고 명확한 제목 작성
   * 설명: 오류 재현 방법, 기대되는 결과와 실제 결과 등을 상세히 작성
   * 로그 및 스크린샷: 가능한 경우 관련 로그 파일이나 스크린샷을 첨부
3. **이슈 라벨링**: 이슈를 보다 쉽게 분류하고 관리하기 위해 적절한 라벨을 사용한다.

#### 버그 리포팅 팁

효과적인 버그 리포팅을 위해 다음 사항들을 참고한다:

* **재현 절차 명확히**: 문제를 재현할 수 있는 명확한 절차를 제공한다.
* **환경 정보 제공**: 문제 발생 시 사용한 시스템 정보, 운영체제 버전, Xenomai 버전 등을 포함한다.
* **간결하고 명확하게**: 핵심 정보만을 포함하여 간결하고 명확하게 설명한다.

### 코드 기여

코드를 통해 직접 기여하고자 하는 경우, GitHub를 통한 Pull Request(PR)를 작성하여 기여할 수 있다.

#### GitHub 저장소 포크와 클론

Xenomai 프로젝트는 GitHub 저장소를 사용한다. 코드를 기여하기 위해서는 다음을 수행한다:

1. **저장소 포크**: Xenomai 공식 저장소를 자신의 GitHub 계정으로 포크한다.
2. **저장소 클론**: 포크한 저장소를 로컬 시스템으로 클론한다.

   ```bash
   git clone https://github.com/your-username/xenomai.git
   ```

#### 브랜치 생성 및 코드 작성

새로운 기능 추가나 버그 수정을 위한 브랜치를 생성하고 코드를 작성한다:

1. **브랜치 생성**: 새로운 브랜치를 생성한다. 일반적으로 `feature/` 또는 `bugfix/` 접두사를 사용한다.

   ```bash
   git checkout -b feature/new-feature
   ```
2. **코드 작성 및 커밋**: 코드 작성 후 변경 내용을 커밋한다. 커밋 메시지는 일관성과 가독성을 위해 명확하게 작성하도록 한다.

   ```bash
   git commit -m "Add new feature for X"
   ```

#### Pull Request 제출

코드 변경 사항을 제출하려면 다음 단계를 따른다:

1. **포크된 저장소에 푸시**: 로컬에서 작업한 브랜치를 자신의 포크된 저장소로 푸시한다.

   ```bash
   git push origin feature/new-feature
   ```
2. **Pull Request 생성**: GitHub 웹사이트에서 포크된 저장소로 이동하여 "New Pull Request" 버튼을 클릭한다. 기본 저장소의 main 브랜치와 비교하여 자신의 브랜치를 선택한다.
3. **PR 설명 작성**: 변경 사항을 상세히 설명하는 내용을 포함하여 PR 설명을 작성한다.
   * 변경 목적: 무엇을 변경하였는지, 왜 변경하였는지를 명확히 설명한다.
   * 변경 내용: 주요 변경 사항을 요약한다.
   * 테스트: 변경 사항이 어떻게 테스트되었는지를 설명한다.

#### 코드 리뷰 및 피드백 반영

제출된 PR은 프로젝트 메인테이너 혹은 다른 기여자들에 의해 리뷰된다. 리뷰 단계에서 받을 수 있는 피드백을 반영하여 다시 푸시한다.

* **리뷰 반영**: 리뷰어가 제안하는 수정 사항을 반영하고, 필요한 경우 추가로 커밋한다.
* **디스커션**: 리뷰어와의 논의를 거쳐 최종 결정이 내려질 때까지 가능한 한 빨리 피드백을 반영하고 응답한다.

### 문서 기여

문서화 작업 역시 매우 중요한 기여 활동이다. 코드를 기여하는 것 외에도 다음과 같은 문서 기여 방법이 있다:

* **사용자 가이드**: 새로운 기능 사용법이나 기존 기능의 상세 사용법을 작성한다.
* **개발자 가이드**: 코드 구조나 API의 동작 원리 등을 설명하는 개발자 가이드를 작성한다.
* **튜토리얼 작성**: step-by-step 방식으로 따라할 수 있는 튜토리얼을 작성하여 새로운 사용자나 개발자가 쉽게 시작할 수 있도록 돕는다.

#### 문서 수정 및 PR 제출

문서를 수정하거나 새로 작성한 경우, 코드를 기여하는 방법과 유사한 방식으로 PR을 제출한다:

1. **문서 브랜치 생성**: 문서 수정을 위한 브랜치를 생성한다.

   ```bash
   git checkout -b docs/update-user-guide
   ```
2. **수정 및 커밋**: 문서를 수정하거나 새로 작성한 후 커밋한다.

   ```bash
   git commit -m "Update user guide for new feature"
   ```
3. **푸시 및 PR 제출**: 변경 사항을 포크된 저장소로 푸시하고 PR을 생성한다.

### 코드 스타일 및 기여 가이드

Xenomai 프로젝트는 일관된 코드 스타일을 유지하기 위해 특정한 코드 스타일 가이드라인을 따른다. 새로운 코드를 작성하거나 기존 코드를 수정하는 경우, 이 가이드라인을 준수해야 한다.

* **코드 포맷**: 프로젝트 내부에서 통용되는 코드 포맷 규칙을 따른다.
* **주석 사용**: 코드 이해를 돕기 위해 적절한 위치에 주석을 다는 습관을 갖는다.
* **커밋 메시지**: 커밋 메시지는 짧고 명확하게 작성하며, 첫 줄은 50자 이내로 유지하고 필요시 상세 설명을 추가한다.

#### 기여 안내 문서

프로젝트의 기여 가이드는 일반적으로 프로젝트 저장소 내에 `CONTRIBUTING.md` 파일로 제공된다. 이 파일에는 기여 방법, 코드 스타일, 커밋 메시지 규칙 등이 포함되어 있으므로 PR을 제출하기 전에 반드시 읽어보아야 한다.
