[Node.js 기여] PR 올리기 (OSSCA)

정하람·2025년 7월 13일

OSS-Contribution

목록 보기
1/7
post-thumbnail

개요

Node.js를 학교에서 프로젝트로 많이 사용하긴 했지만 기술을 너무 잘 모른 채로 사용하는 것 같아서 전부터 기여를 해보고 싶었다. 기여를 하면 어쩔 수 없이 기술도 공부하며 배우게 될 것 같았다.

군대 오기 전 1학년 때 오픈소스 수업을 들으며 이 생태계에 기여를 하는 것이 얼마나 숭고하고 중요한 일인지 들어서 해보고 싶은 생각을 항상 있었으나, 진입장벽 때문에 해내진 못 했다.

올해 초에 혼자 사지방에서 PR을 올렸는데 어떤 외국인 개발자한테 거절당해 closed 된 후 … 이번에 감사하게도 OSSCA 멘티에 선정되어 멘토님, 여러 사람들과 함께 다시 도전해볼 수 있게 되었다.

빌드

  1. 소스 코드 클론
git clone https://github.com/nodejs/node.git
  1. ./configure명령으로 빌드 환경을 설정
./configure
  • gyp라는 파이썬으로 짜여진 빌드 자동화 도구로 configure.py 파일을 내부적으로 실행하여 MakeFile 을 생성함 ⇒ out 파일에 MakeFile 이 실행됨.
  1. 본인 환경 코어 수 확인
sysctl -n hw.logicalcpu
10
  1. 빌드
make -j10 ## 본인 코어 수에 맞게 돌리면 더 빠를 것 같습니다 !16분 소요.

Node.js의 Makefile에서 기본 타겟은 node 바이너리를 만드는 것이고

  • src/*.cc (C++) 파일들
  • deps/ 하위 디렉토리의 코드들 (예: V8, libuv, etc.)
  • node_main.cc, node.cc 등이 진입점
  • gyp이 생성한 .mk 파일들로 세세한 컴파일 플래그 관리

내부적으로는 위의 내용의 것을 컴파일하게 됨.

컨트리뷰션 git 환경 조성

  1. 현재 디렉토리 저장소.브랜치 확인
git remote -v

origin  https://github.com/nodejs/node.git (fetch)
origin  https://github.com/nodejs/node.git (push)

→ 클론하고 빌드만 했으니 현재 디렉토리는 공식 저장소를 원격 저장소로 연결하고 있음.

‼️ 공식 저장소에는 push 권한이 없기 때문에 직접 수정하거나 push 하려 하면 에러남.

  1. 기존 origin 이름을 백업
git remote rename origin upstream
  1. 내 깃허브 포크한 주소를 origin으로 추가
git remote add origin https://github.com/haramj/node.git
  1. 확인
(3.7.12) jeongharam@jeongharam-ui-noteubug node % git remote -v                                       
origin  https://github.com/haramj/node.git (fetch)
origin  https://github.com/haramj/node.git (push)
upstream        https://github.com/nodejs/node.git (fetch)
upstream        https://github.com/nodejs/node.git (push)

→ 이렇게 하면 공식 저장소를 upstream 으로 남기고 내 포크는 origin으로 써서 자유롭게 PR을 보낼 수 있다.

테스트

  1. 테스트
make test

ISSUE 확인 후 고르기

  • good first issue Labels 을 설정

→ 첫 기여자가 할만한 이슈들로 분류됩니다.

https://github.com/nodejs/node/issues/55864

→ 저는 이 이슈로 골랐는데 대화들 읽어보니 ERROR 관련 doc만 고치면 될 것 같아서 수정 후 커밋,푸시해서 바로 PR올려봤습니다.

PR 올리기.

  • 처음에 PR 올릴 때 보면 뭐라고 이미 많이 써져 있는데 “문서 읽었냐”, “동의하냐” 이런거라서 지우고 하진 않고 보통 그 위에다가 PR 메시지 써서 올리면 된다고 합니다.

https://github.com/nodejs/node/pull/59050

정리

저기 위에는 그냥 doc 만 고치면 될 것 같아서 해서 했다라고 쉽게 한 것처럼 써있지만, 쉽지 않다. 처음에 기여할 땐 뭘 기여해야할지도 모르고 엄청 막막하다. 하지만 그냥 거절당해도 상관 없다는 생각으로 issue들 차근차근 여러개 읽어보면서 할 수 있는 것들을 천천히 찾아보는 게 중요한 것 같다.

-> 3일 뒤에 Merge 되었다 .. ! 첫 기여다 드디어 🎉

0개의 댓글