필자는 깃허브에 있는 오픈소스 프로젝트를 자주 들여다 봅니다.
뛰어난 개발자분들이 작성한 코드를 보고 새로운 언어 기능이나 구조를 보며 배우는 것이 무척 많습니다.
그러던 중 기여할 수 있는 부분이 생기면 여러번 고민해보고 PR 을 보내기도 합니다.
처음에는 확신이 없었고 민폐가 아닌가? 하는 생각이 들었지만
에러를 해결하고 나서 많은 분들이 좋은 피드백을 주셨던 경험이 있습니다.
그 후 개선할 부분을 발견하면 이슈를 꼼꼼히 확인하고 PR 을 올리는 습관을 가질 수 있었습니다.
이번 포스팅에서는 초보 개발자가 관심이 있는 프로젝트에 기여하고 싶을 때
어떻게 시작할 수 있는지에 대해서 다루어 보겠습니다.
* Github 를 기준으로 작성하였습니다. 필자도 많이 미숙하지만 관련된 내용을 정리하면 좋겠다는 생각에 포스팅을 작성하게 되었습니다.
목차
1 - Pull Request 에 대해서 이해하기
2 - 버그 및 수정사항 발견하기
3 - 마무리
1. Pull Request 에 대해서 이해하기
오픈소스는 다양한 사람들이 협업하기 때문에 Git 에 대한 이해는 필수적이라고 생각합니다.
혹시 Git 의 개념이 아직 어색하다면 다음과 같은 강의들을 추천드립니다.
pull request 는 "제가 작업한 코드를 확인하고 브랜치를 병합해주세요." 라는 일련의 과정을 말합니다.
권한이 있는 저장소에서 작업할 경우에는 직접 브랜치를 만들고 내부에서 pull request 가 가능합니다.
하지만 오픈 소스의 경우 main contributors 를 제외한 개발자들은 push 권한이 없기 때문에 다음과 같은 과정을 거쳐야 합니다.
< Pull Request 과정 요약 >
A: 해당 오픈소스 저장소
B: fork 한 저장소
`A 저장소를 fork` -> `B 에서 commit` -> `B 에서 push` -> `A 에게 pull request 요청`
< Github Pull Request 과정 >
1 - 해당 오픈소스 저장소를 fork 합니다.
2 - fork 한 저장소에서 작업하고 commit 을 push 합니다.
3 - New pull request 를 생성합니다.
4 - 해당 저장소와 브랜치를 설정하고 양식에 맞게 작성하면 됩니다.
( 각 프로젝트에 맞는 contributing guide 를 참고하는 것이 가장 좋습니다. )
2. 버그 및 수정사항 발견하기
< 오픈소스 사용중에 문제가 발생하는 경우 >
컴파일 도중에 에러가 발생하거나 혹은 오동작이 발생하는 버그를 발견했을 때
로그와 실행 환경을 파악하여 어떤 것이 문제인지 살펴봅니다.
* Github issue 를 확인하여 같은 문제가 발생한 유저가 있는지, 이에 대한 문제 해결이 진행되는지 확인해보면 더 좋습니다.
오픈소스 자체의 문제라고 생각되면 Issue 를 등록하거나 수정한 코드로 해결된다면 PR 을 요청해봅니다.
* Issue, pull request 에 대한 규칙이 각 오픈소스에 있는 경우가 많습니다. 꼭 확인 후 진행하는 것을 추천드립니다.
< Github Issue 확인하기 >
Github Issue 는 프로젝트에 대한 기능, 버그, 제안등의 여러가지 이슈를 등록할 수 있는 기능입니다.
해당 이슈에 대한 수정이나 개선이 가능하다면 pull request 에 다음과 같이 Issue 번호를 붙여서 작성할 수 있습니다.
< README 에 있는 오타, 코드 컨벤션 수정하기 >
코드에 변수 명이나 주석 철자에 오타가 있거나 README 에 있는 문서가 잘못 링크가 되어있는 경우에도
간단하게 수정해서 PR 할 수 있습니다.
3. 마무리
오픈소스의 이슈를 해결하는 것은 무척이나 까다롭고 어려운 작업이라고 생각합니다.
특히 기능을 개선하거나 새롭게 만들 때에는 상황에 따라 테스트 코드 작업도 필요한 경우가 있습니다.
* 일정 규모 이상의 오픈소스는 CI/CD 환경이 구축되어 PR 과정에 테스트를 수행합니다.
다만 꼭 기여를 하지 않더라도 오픈소스를 통해 다양한 사람들의 코드를 살펴볼 수 있고 점차 코드를 이해하는 능력이 성장하는 것을 느낍니다. 이러한 과정은 본인만의 오픈소스 라이브러리를 만들 수 있는 토대가 될 수 있다고 생각합니다.
마지막으로 Github Issue 통한 프로그래밍 학습법을 소개하고 포스팅을 마치겠습니다. 읽어주셔서 감사합니다!
'Other' 카테고리의 다른 글
MAKE US IT 동아리 6기 후기 및 간단 회고 (3) | 2021.04.13 |
---|