본문 바로가기

Log/essay

초보의 오픈소스 첫 PR 후기

코딩의 세계에 발을 들인 사람이라면, 자연스럽게 오픈소스에 관한 이야기를 듣게된다.

 

하지만 대부분 자신과 관계없는 이야기가 대부분이다. 내 경우도 마찬가지였다. 

친구들끼리 PR하는 것이 아닌, 소스가 오픈되있고 유명한 소스에 PR한다는 것은 뭔가 어렵게 느껴졌다.

 

 

최근 WebGL 엔진에 관심에 생겼고, 그 중 스냅챗에서 인수한 PlayCanvas 라는 WebGL 엔진을 사용하고 있었다.

 

사용하다 이상하다 싶은 것들은 이슈에 등록했고, 이슈에 등록하니 신기하게 반응이 바로바로 왔다.

 

그러던중 path 관련 함수를 사용하기위해 문서를 확인하니 관련 API 문서가 없었다.

 

소스를 확인하니 JSDoc 주석으로 문서를 생성을 하는데, 최근 만들어진 함수는 아직 주석이 안달려있었다.

 

포크뜨고, 예제를 만들고, 영어 번역기 돌리면서 문법 이상한거 없는지 확인하며 작성을 했다.

 

그리고 PR할려고 하는데 master branch를 PR하지 않는다고 깃 허브에서 경고를 줬다.

 

그래서 다시 브랜치 하나 따서 작성을 했고 설립자인 윌이 직접 친절한 답장과 함께 PR을 받아줬다.

 

https://github.com/playcanvas/engine/pull/1809

 

[DOCS] Add documentation for pc.path by velbi · Pull Request #1809 · playcanvas/engine

PR add jsdoc comments for the following functions: getExtension isRelativePath extractPath I confirm I have signed the Contributor License Agreement.

github.com


주석을 달기위해 함수를 분석하는 와중에 extractPath 라는 함수가 제대로 작동안한다는 것을 알았다.

pc.path.extractPath('/path/to/file');  // returns "//path/to"

절대경로일때 앞에 슬래시가 하나 더 붙어서 리턴되는것이였다.

 

그래서 다른 것 까지 개선해서 PR했는데..  어떤 경우에는 잘못된 결과를 리턴했다..ㅜ

.

윌은 어떤 경우인지 말을 해줬고, 나는 커밋들을 리셋후 다시 커밋 후 PR 했다.

 

그리고 윌은 다시 코드리뷰를 해줬고, 바로 PR..되는줄 알았는데.. Contributor License Agreement 동의 후 머지되었다.

 

https://github.com/playcanvas/engine/pull/1827

 

[FIX] Fix pc.path.extractPath for absolute path by velbi · Pull Request #1827 · playcanvas/engine

Fix code for the following reason. pc.path.extractPath('path/to/file'); // returns "./path/to" pc.path.extractPath('./path/to/file'); // returns "././path/to" ...

github.com

주석과 간단한 함수 버그픽스였지만, 해외 유명코드에 처음부터 끝까지 PR 프로세스를 해본 경험이 참 소중했다.

 

ps. unit 테스트의 필요성을 느꼈다.

ps. 궁금한 점이 더 많아졌다.

감사합니다

'Log > essay' 카테고리의 다른 글

개발자를 위한 광고 '코드펀드'  (0) 2020.01.30
초보의 오픈소스 첫 PR 후기  (0) 2020.01.20
영어에 대한 내 생각  (0) 2020.01.20
내가 좋아하는 프로그래밍 명언  (0) 2020.01.18
내가 좋아하는 명언, 글  (0) 2020.01.08
계륵같은 웹지엘 기술  (0) 2019.12.07