오픈소스를 직접 개발하지 않아도 다양한 방법으로 기여 할 수 있다는 것을 알고 계신가요?
저는 이번에 그동안 미뤄 왔던 오픈 소스에 기여해 보는 프로젝트를 하게 되었습니다.
다양한 오픈소스 기여 방법:
- 신규 기능 구현하기
- 버그 픽스하기
- 문서화 하기 ( 가이드라인, 코드 컨벤션, 튜토리얼 등을 작성하기 )
- 문서 번역하기 ( 다양한 언어에서 한국어로, 한국어 에서 다양한 언어로 가능 )
- 코드 리팩토링 하기
- 의존성 라이브러리 ( Depenencies library ) 버전 업그레이드, 호환성 체크
- 기타 오타 수정하기
- 테스트 코드 작성하기 및 보안하기
- 로고 만들기 / 수정하기
- PR 질문 답변 혹은 의견 제시하기
이렇게 다양한 기여 방법이 있지만, 개발을 시작하고 한번도 직접 기여를 해 볼 엄두를 내지는 못한 것 같습니다.
그래서 이번 기회에, 업무가 바쁘지만 별도의 시간을 내어서 가장 간단 하게 해 볼 수 있는 문서 변역을 시도 해 보기로 했습니다!
기여 할 오픈소스 정하기
오픈소스 문서 선정하기: 우선 첫번째로 해야 할 일은 문서 선정인데요..
저의 경우는 MDN 문서를 번역 하기로 정했습니다.
(MDN 문서는 mozila 사의 웹페이지로 웹의 표준을 기제한 문서입니다.)
저는 인터페이스 솔루션 회사에서 일을 하면서, 웹 ( HTTP ) 표준을 참고 할 일이 종종 있었고,
의사소통에서 “표준” 이 중요하다는 것을 깨달은 경험이 있어서 이 문서를 선정하게 되었습니다!
구체적인 기여 항목 정하기
문서를 찾은 후에는 현재 번역이 미 완성된 페이지를 찾아야 했습니다.
그 중 운좋게 HTTP header 인 Access-Control-Max-Age 의 번역이 아직 완료되지 않은 것을 확인 할 수 있었습니다.
기여 방법 찾기
번역을 할 페이지를 찾았다면, 이제 어떻게 번역을 하는지가 필요하겠죠?
많은 오픈소스들은 기여 하는 방법을 명시 해 놓는 경우들이 많아요!
만약 기여 하고자 하는 프로젝트에 가이드가 별도로 없는 경우,
프로젝트 깃허브에 들어가서 이전 PR 들을 유심히 살펴 보시면 어떻게 기여 해야 하는 지 알 수 있을 거에요!
(특정 규칙을 찾는다면, 모두가 함께 사용 할 수 있는 기여 가이드 문서를 직접 만들어 PR 하는 것 도 좋은 기여가 될 수 있을 것 같아요 )
MDN 의경우 친절하게도 첫번쨰 기여자를 위한 가이드가 매우 잘 정리 되 있었습니다!!!!!
이렇게 한국어로 된 가이드도 있습니다 !!
번역 안내서, 용어 안내서, macro 안내서에 기본적인 규칙등이 잘 기제되어있으니 한번 읽어보고 번역 하시는 걸 추천드려요!
예를 들어 " JavaScript 는 브랜드 이름이므로 자바스크립트 라고 번역해선 안됩니다!! " 와 같은 디테일들을 확인 하 실 수 있어요!
기여 하기
이제부턴 제가 직접 MDN 문서에 기여한 과정들을 순차적으로 한번 적어보도록 할게요!
사전준비:
yarn 설치 (필수)
가이드에 명시 된 대로 컨트리뷰션을 위해선 yarn 패키지 매니저 설치가 필수입니다. 아래의 명령어를 터미널에서 실행 하시면 다운 받으 실 수 있습니다. ( MacOS 와 Window 설치 방법이 다른 점 유의 해 주세요.)
#MacOS 기준
VSCode 설치 ( 선택 )
필수는 아니지만 MD 문서를 쉽게 편집하고자 기존 사용하던 VSCode를 사용했습니다.
설치방법: https://code.visualstudio.com/download
Download Visual Studio Code - Mac, Linux, Windows
Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.
code.visualstudio.com
두 개의 repo 포크 (Fork) 하기:
MDN 깃허브 페이지에서 총 2 개의 리포 (content 와 translated-content )를 포크 하셔야 합니다.
아래의 이미지 중 우측 상단에 있는 Fork 버튼을 눌러 주시면 간단하게 Fork 할 수 있어요.
깃허브에 클론 된 리포를 로컬에 클론하기:
터미널에 다음 명령어를 입려하여 로컬 환경에 포크 한 리포를 클론 해 주세요.
git clone https://github.com/[본인 github ID]/translated-content
git clone https://github.com/[본인 github ID]/content
로컬 환경에서 translated-content 내의 원하는 파일 수정, 커밋, 푸쉬
PR 생성:
우측 상단에 있는 New pull request 버튼을 클릭해서, 포크된 리포지토리의 브랜치를 translated-content 의 main 브랜치로 PR 을 생성 하기
(자동 제공되는 PR 템플릿에 기여 내용을 잘 작성 해 주시면 됩니다.)
피드백 확인 후 다시 커밋하기:
몇일 후에 PR 을 확인 해보니, 매니저님께서 피드백을 주셨습니다.
피드백 주신 내용을 반영 하여 다시 커밋 한 화면입니다!
마무리
개발을 시작한지 1 년만에 처음으로 오픈 소스 기여를 해 보았습니다. 그동안은 오픈소스는 천재들만의 영역 이라는 생각도 있고, 알게 모르게 진입장벽을 느끼고 있었던 것 같아요.
여담으로, 최근에 NestJS 를 사용하여 백앤드를 구축하는 프로젝트에서 Prisma ORM 을 사용 하던 중,
Query 에 대한 Context 관리가 안되는 이슈가 있었습니다.
아직 개발실력이 많이 부족해서 거대 라이브러리에 신규 기능개발을 할 역량은 안되지만.
앞으로는 실력을 많이 쌓아서 여러 오픈소스에 유익한 기여하는 개발자로 살아 보도록 하겠습니다!!