Computer Engineering/Django

Django 오픈소스 contributing 하기!

jordan.bae 2021. 7. 31. 12:06

Django

Django에 기여하는 방법은 여러가지 있습니다.


기여하는 방법

  • Writing code
  • Writing documentation
  • Localization
  • Donation
  • Bug report

이번 포스팅에서는 writing code로 기여하는 방법에 대해서 적어보려고 합니다.

Django에서도 first patch를 하는 사람들을 위해서 문서(https://docs.djangoproject.com/en/dev/intro/contributing/)를 만들어 두었지만, 제 나름대로 했던 방법을 정리해서 공유 하려고 합니다.

 

1.해결 할 티켓 찾기 or 만들기

장고에서는 ticket 시스템을 통해서 버그나 기능 개선들을 tracking합니다. 그래서 혹시 bug를 발견하셨으면 bug를 reporting하는 것도 contribution의 시작입니다.

https://code.djangoproject.com/query 이 곳에서 티켓들을 찾을 수 있고, 티켓 시스템은 github을 통해 로그인이 가능합니다.

 

1.1) 티켓 만들기

https://code.djangoproject.com/ticket/32425

위 티켓은 제가 회사에서 일을 하면서 발견했던 버그를 리포팅한 것입니다. 새로운 티켓을 만드는 방법은 https://code.djangoproject.com/newticket 여기에 들어가보면 티켓을 만들기전에 읽기를 권장하는 문서들의 링크가 있습니다.


1.2 발견한 버그가 없을 때

이런 경우에는 자기가 관심있는 component의 ticket을 찾아서 수정하는 것이 좋습니다.

저 같은 경우는 Database component와 Migration쪽을 집중적으로 보고 있습니다.

관심있는 component의 ticket들을 살펴보면서 자신이 수정가능한 bug or improvement인지 확인하다보면 고칠 수 있는 ticket들을 찾을 수 있습니다. Django 코드에 익숙하지 않으면 고치기 어려운 것들도 많아서 처음에는 쉬운 버그 위주로 수정하는 것을 추천합니다.

 

2. Fork & Clone 하기

Django 레포에서 Fork 버튼을 눌러 포크를 진행.

https://github.com/django/django/

git clone git@github.com:baidoosik/django.git

 

3. Remote Repository 추가하기

 

현재 원격 저장소(origin)은 포크된 우리의 저장소입니다. 이와 별개로 원래 저장소에서는 따로 개발이 진행될 것이기 때문에 최신 버전과 싱크를 맞추는 작업이 필요합니다. 그래서 원래 저장소도 원격 저장소(upstream)로 추가합니다.

git remote add upstream git@github.com:django/django.git

jordan.bae@Jordanui-MacBookPro django % git remote -v
origin	git@github.com:baidoosik/django.git (fetch)
origin	git@github.com:baidoosik/django.git (push)
upstream	git@github.com:django/django.git (fetch)
upstream	git@github.com:django/django.git (push)

 

4. 해결하려고 하는 ticket에 자신을 assign하기

아직 assign이 되지 않은 티켓을 찾아서 자신을 assign 합니다.

 

5. Branch 생성하고 작업하기 & 작업 정리

branch는 ticket이 있다면 ticket number로 작성하는 것이 좋습니다.

git checkout -b ticket-32743

작업할 때 커밋 메시지를 고민하는 경우가 많은데, 로컬에서 개발할 때는 커밋 메시지를 크게 고민하지 않아도 됩니다. 푸시(Push)하지 않는 한 해당 메시지는 올라가지 않으니까요. 푸시 하기 전에 커밋 내역을 정리할 수 있으므로 로컬에서는 마음껏 커밋하고 PR을 만들기 전에 정리하면 됩니다.

Rebase관련해서는 아직 정확히 모르시면

이글을 한 번 읽어 보시는 것을 추천합니다. → https://junwoo45.github.io/2019-10-23-rebase/

작업이 완료된 후 푸시하기 전에 원래 저장소에 수정된 작업이 있으면 포크된 저장소와 싱크를 맞춰야 합니다. upstream 브랜치와 master 를 머지(Merge)합니다.

git fetch upstream
git checkout master
git merge upstream/master or main

# 최근 11개의 커밋 정리, 고치고 싶은 commit시점으로 돌아가서 edit하면됨.
git rebase -i HEAD~11

# rebase 계속할 때
git rebase --continue

# rebase 취소
git rebase --abort

 

6. Push하고 리뷰 받기

git push origin master

을 하고 django repo에서 가서 PR을 만들면 review를 받고 해당 픽스를 반영합니다.

만약 코드 fix가 많으면 리뷰는 조금 오래 걸릴 수 있는 점을 참고하시면 좋습니다.

예시: https://github.com/django/django/pull/14700

 

7. Merge하기

리뷰 받은 내용을 모두 반영했다면 member분들이 merge를 해주십니다!
여기까지 읽으신 모든 분들이 Django에 기여하실 수 있으면 좋겠네요! 


Reference

가장 좋은 가이드!

https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/

장고 첫 번째 patch 하기

https://docs.djangoproject.com/en/dev/intro/contributing/

 

반응형