본문 바로가기
개발

[개발 문화] 초보자를 위한 오픈 소스 기여 방법

by 민됴리 2024. 4. 20.
반응형

시작하며

the the

  오픈 소스 프로젝트에 기여하는 것은 개발자로서 성장할 수 있는 좋은 기회입니다. 오픈 소스 프로젝트에 참여하면 새로운 기술을 배우고, 협업 능력을 기를 수 있습니다. 또한 현대의 모든 소프트웨어는 오픈 소스 위에 구현됐다고 해도 과언이 아닐 정도로 '오픈 소스 정신'은 현대 개발 문화의 근간을 이루고 있습니다. 따라서 개발자로서 자신의 코드가 많은 사람들에게 도움이 되는 경험을 하는 것은 개발자의 세계에 입문하는 의미 있는 과정이라고 볼 수 있습니다.

  그러나 막 개발을 배우기 시작한 초보 개발자의 입장에서는 오픈 소스 프로젝트에 기여하는 것이 막연하게 느껴질 수 있습니다. 더 많은 사람들이 오픈 소스 기여자(Contributor)가 됐으면 하는 마음에, 이 글에서는 제가 오픈 소스 프로젝트에 기여했던 경험을 바탕으로 초보 개발자라도 쉽게 기여할 수 있는 방법을 소개하고자 합니다.

오픈 소스 프로젝트에 기여하는 방법

  오픈 소스 프로젝트에 기여할 수 있는 방법은 다양합니다. 코드 작성 및 기능 구현도 가능하지만, 이를 위해서는 오픈 소스 프로젝트의 구조와 관련 지식에 대한 깊이 있는 이해가 필요합니다. 초보 개발자에게는 쉽지 않은 일일 수 있습니다. GitHub에서 제공하는 '오픈소스에 기여하는 방법' 문서를 보면, 코딩 실력이 부족하더라도 문서 작성, 디자인, 행사 주관 등 다양한 방식으로 기여할 수 있다는 것을 알 수 있습니다. 이 중 상대적으로 쉽게 할 수 있는 버그 수정하기, 문서 오류 수정하기, 새로운 기능 제안하기에 대해 살펴보겠습니다.

 

나의 첫 오픈소스 기여

  • 버그 수정하기:앞서 언급했듯이, 주니어 개발자가 새로운 기능을 코딩해서 구현하는 것은 어려울 수 있습니다. 그러나 코딩을 통해 버그를 수정하는 것은 비교적 쉬우면서도, 개발 실력을 늘리고 프로젝트 이해도를 높일 수 있는 좋은 방법입니다. 자신이 기여하고자 하는 오픈 소스 프로젝트에서 버그를 발견하고 이를 수정하거나, 오픈 소스를 사용하다가 발견한 버그를 수정할 수 있습니다. 버그를 찾아내고 원인을 분석하는 과정에서 코드 이해도를 높일 수 있고, 실제 수정 과정에서도 새로운 기술을 배울 수 있습니다.
  • 문서 오류 수정하기: 오픈 소스 프로젝트의 문서에서 오탈자(typo)나 설명이 부족한 부분을 찾아 수정하는 것도 좋은 기여 방법입니다. 문서 작성 및 편집 능력을 기를 수 있으며, 프로젝트에 실질적인 도움을 줄 수 있습니다. 제가 처음 오픈 소스에 기여했던 사례는 firebase-scripy-python 프로젝트의 README.md 파일에서 발견한 오류를 수정한 것입니다. 이 글에서 설명할 사례 역시 Python의 'paramiko' 라이브러리에서 발견한 오탈자를 수정하는 내용입니다.
  • 새로운 기능 제안하기: 오픈 소스 프로젝트에 새로운 기능을 제안하는 것도 좋은 방법입니다. 프로젝트의 요구사항을 파악하고, 이를 반영할 수 있는 새로운 기능을 제안하는 과정에서 프로젝트에 대한 이해도를 높일 수 있습니다.

 

오픈 소스 기여를 위한 준비 사항

GitHub에 등록된 오픈 소스들

  1. Git과 GitHub 사용법 익히기
    많은 오픈 소스 프로젝트들이 GitHub에 올라와있습니다. 실제로 2만 건에 가까운 리포지토리들이 오픈 소스 토픽에 등록돼있습니다. 따라서 오픈 소스 프로젝트에 기여하려면 Git과 GitHub 사용법을 익혀야 합니다. 코드 버전 관리, 협업, 코드 리뷰 등 다양한 기능을 활용할 수 있어야 합니다.
  2. 프로젝트 코드 이해하기
    오픈 소스 프로젝트에 기여하려면 해당 프로젝트의 코드 구조와 동작 원리를 이해해야 합니다. 또한 오픈 소스 프로젝트에 기여하는 방법은 프로젝트마다 세부적으로 다른 부분이 많습니다. 프로젝트의 README 파일, 문서, 커밋 내역 등을 꼼꼼히 살펴보면서 프로젝트에 대한 이해와 숙지를 할 수 있습니다.
  3. 개발 환경 설정하기
    프로젝트 코드를 로컬 환경에서 실행하고 테스트할 수 있도록 개발 환경을 설정해야 합니다. 프로젝트 문서에 나온 대로 개발 환경을 구축하고 테스트해 보세요.

 

Paramiko 라이브러리의 문서 오류 수정 사례

paramiko

Paramiko는 Python에서 SSH 프로토콜을 사용하여 원격 서버에 접속할 수 있게 해주는 라이브러리입니다.

 

'the the window'. 심지어 같은 오탈자가 세 개나 있다.

최근 이 라이브러리를 사용하다가 transport.py 파일에 적혀있는 설명 중 "the window"가 "the the window"로 잘못 기재된 오탈자를 발견했습니다. 처음엔 "the the window"가 무엇을 의미하는지 찾느라 잠깐의 시간을 허비했습니다. 이처럼 사소한 오탈자라도 사용자들의 시간 낭비를 막기 위해 수정이 필요하다고 생각했습니다.

 

이를 위해 가장 먼저 Paramiko 공식 문서의 'Contributing' 페이지를 참고했습니다. 이 페이지에 따르면 paramiko에 오탈자 수정을 기여하는 법은 다음과 같습니다.

①이슈(issue) 등록 ②'Paramiko' 리포지토리 포크(fork)하기 ③내 컴퓨터에 포크한 리포지토리 클론(clone)하기 ④코드 수정하고 PR 제출 ⑤코드 리뷰 및 PR 승인 기다리기

만약 중요한 변경 사항을 PR했으면 Changelog도 작성해야 하지만, 오탈자 수정의 중요도는 낮기 때문에 이 부분은 생략하겠습니다. 각 방법에 대해 차례대로 보겠습니다.

 

먼저 GitHub 저장소의 Issue 탭에서 새로운 이슈를 등록했습니다. 이슈 제목을 "문서의 특정 부분 오탈자 수정 요청"으로 하고, 상세 내용에 오탈자가 있는 부분의 스크린샷과 수정이 필요한 내용을 자세히 설명했습니다. 적절한 라벨(label)이 존재하지 않아서 선택하지 않았습니다.

 

이후 Paramiko 프로젝트의 소스 코드를 포크(fork)하고, 로컬 환경에 클론(clone)해 문서 수정 작업을 진행했습니다. 수정된 문서를 확인한 뒤 커밋하고 GitHub 리포지토리에 push했습니다.

 

Pull Request 작성 시 다른 기여자들의 PR 제목과 본문을 참고하여 수정 내용을 쉽게 알 수 있도록 작성했습니다. 또한 References 섹션에 이전에 작성했던 이슈를 연결했고, 마지막 줄에 "Closes #123"과 같은 문구를 추가하여 PR이 merge되면 자동으로 관련 이슈가 닫히도록 했습니다

 

PR을 보내고 나서는 프로젝트 관리자의 코드 리뷰를 기다리고 있습니다. 관리자의 피드백이 있을 경우 이를 반영하여 추가 수정을 진행하면 됩니다. 최종적으로 PR이 승인되면 Paramiko 문서의 오탈자가 수정될 것입니다. 다만, 관리자가 바쁘거나 프로젝트 관리를 중단했다면 PR이 승인되지 않을 수도 있습니다.

 

마치며

  오픈 소스 프로젝트에 기여하는 것은 개발자로서 성장할 수 있는 아주 좋은 기회입니다. 코딩 실력이 뛰어나거나 프로젝트 관련 지식이 풍부한 개발자뿐만 아니라, 이제 막 코딩을 시작한 초보 개발자도 오픈 소스 프로젝트에 기여할 수 있습니다. Paramiko 라이브러리의 문서 오류를 수정한 사례에서 볼 수 있듯이, 작은 기여라도 프로젝트에 도움이 될 수 있습니다. 자신의 코드가 오픈 소스의 일부가 되는 것을 보면서 성취감과 자부심도 느낄 수 있습니다. 또한 오픈 소스 기여를 통해 개발 실력을 키우고, 협업 능력을 기르며, 기술 커뮤니티에 기여할 수 있습니다. 아직 오픈 소스에 익숙하지 않다면 작은 기여부터 시작해보시는 것을 꼭 추천드립니다. 

 

참고하면 좋을 링크

  • GitHub에서 작성한 '오픈 소스에 기여하는 방법': 오픈 소스에 기여해야 하는 이유부터 기여하는 방법까지 읽기 쉽게 작성됐습니다.
  • SK텔레콤의 'Open Source Guide': 오픈 소스와 관련해서 알아두면 좋을 내용들이 아주 상세하게 작성됐습니다. 실제 SK텔레콤의 내부 구성원들을 위해 만들어진 가이드에서 외부로 유출되면 안 되는 일부 내용만 제외하고 그대로 있다고 합니다.
  • contribution-guide.org: 오픈 소스에 기여할 수 있는 일반적인 방법이 절차별로 잘 작성되어 있습니다. paramiko를 포함해서 많은 python 라이브러리들은 이 가이드라인을 따릅니다.
반응형