DaleSchool

Fork로 오픈소스에 기여하기

입문20분

학습 목표

  • Fork와 Clone의 차이를 설명할 수 있다
  • Fork한 저장소에서 변경하고 원본 저장소에 PR을 보낼 수 있다
  • 오픈소스 기여 워크플로우를 이해할 수 있다

Fork란?

다른 사람의 저장소를 내 계정으로 복사하는 것입니다.

원본 저장소는 내가 직접 수정할 수 없습니다. 하지만 Fork하면 내 계정에 복사본이 생기고, 거기서 자유롭게 수정할 수 있습니다. 수정이 완료되면 원본 저장소에 Pull Request를 보냅니다.

원본 저장소                 내 Fork
(다른 사람의 계정)           (내 계정)
       │                        │
       └──── Fork ─────────────▶│
                                │ 수정
                                │
       ◀──── Pull Request ───────┘

이것이 오픈소스 기여의 기본 흐름입니다.

Fork하기

  1. 기여하고 싶은 저장소 페이지로 이동
  2. 오른쪽 상단 Fork 버튼 클릭
  3. Create fork 클릭

이제 github.com/내계정/저장소이름에 복사본이 생겼습니다.

Fork한 저장소에서 작업하기

내 Fork에서 브랜치를 만들고 수정합니다.

  1. Fork된 저장소에서 새 브랜치 만들기: fix-typo
  2. 수정할 파일 찾기 (예: README.md의 오타 수정)
  3. 파일 수정 후 커밋

중요: 항상 브랜치에서 작업합니다. Fork의 main을 직접 수정하면 나중에 원본과 동기화가 복잡해집니다.

원본 저장소에 PR 보내기

  1. Fork된 내 저장소 페이지로 이동
  2. ContributeOpen pull request 클릭
  3. PR 제목과 설명 작성

좋은 오픈소스 PR 설명:

제목: fix: README의 설치 명령어 오타 수정

내용:
## 변경 사항
`npm insatll` → `npm install` 오타 수정

## 동기
설치 가이드를 따라하다가 오타를 발견했습니다.
  1. Create pull request 클릭

이제 원본 저장소 관리자(maintainer)가 리뷰 후 병합 여부를 결정합니다.

오픈소스 기여 예절

기여를 환영받으려면 프로젝트의 규칙을 따라야 합니다.

기여 전 확인:

  • CONTRIBUTING.md 파일이 있으면 먼저 읽기
  • 이미 같은 Issue/PR이 있는지 확인
  • 큰 변경은 먼저 Issue로 제안하고 피드백 받기

PR 작성 시:

  • 작은 단위로 나누기 (한 PR에 너무 많은 변경 금물)
  • 왜 이 변경이 필요한지 설명
  • 코드 스타일은 프로젝트 기준 따르기

리뷰 피드백 받을 때:

  • 수정 요청은 비판이 아닙니다 — 기여를 도와주는 것입니다
  • 이유가 있으면 정중하게 의견 나누기
  • 반영할 부분은 빠르게 반영하기

"왜?" — 오픈소스 기여가 가져다주는 것

오픈소스 기여는 단순히 코드를 고치는 게 아닙니다.

실력 향상: 수천 명이 사용하는 실제 프로젝트의 코드를 읽고 수정합니다. 교과서에서 배우지 못한 것들을 배웁니다.

이력서: "React 기여자"는 강력한 이력입니다. github.com/facebook/react의 커밋에 내 이름이 올라갑니다.

네트워킹: 전 세계 개발자들과 협업합니다. 오픈소스를 통해 취업이 된 사례도 많습니다.

처음에는 오타 수정, 문서 개선처럼 작은 것부터 시작하세요. 기여 경험 자체가 중요합니다.

심화 학습

Fork를 최신 상태로 유지하기

원본 저장소에 새 커밋이 생기면 내 Fork는 뒤처집니다. 동기화하는 방법:

내 Fork 페이지에서 Sync forkUpdate branch 클릭.

원본의 최신 변경사항이 내 Fork에 반영됩니다. PR을 보내기 전에 항상 동기화하는 것이 좋습니다.

첫 기여로 좋은 프로젝트 찾기

처음 오픈소스에 기여하고 싶다면:

한국어 문서 번역도 좋은 시작점입니다.

  1. GitHub에서 아무 공개 저장소를 Fork하세요 (예: 입문용 연습 저장소).
  2. Fork된 저장소에서 새 브랜치를 만들고 파일 하나를 수정하세요.
  3. 원본 저장소로 Pull Request를 열어보세요 (실제로 병합되지 않아도 됩니다).

Q1. Fork와 Branch의 차이로 올바른 것은?

  • A) Fork는 같은 저장소 내에서 복사하고, Branch는 다른 계정으로 복사한다
  • B) Fork는 다른 계정으로 저장소를 복사하고, Branch는 같은 저장소 내에서 작업 흐름을 분리한다
  • C) Fork와 Branch는 동일한 기능이다
  • D) Fork는 파일을 삭제하고, Branch는 파일을 추가한다

참고 자료