누구나 할 수 있는 오픈소스 Contribution
이전 포스팅에서 SIPE 합격 후기를 올렸었습니다.
이번엔 SIPE에서 진행하는 미션의 일부인 오픈소스를 활용한 읽기 훈련에 대해 말해보려 합니다.
저는 현재 인턴으로 근무중인데요 처음으로 일을 해보니
코드를 작성하는 시간보다 무언가를 읽는 시간이 더 큰 것 같다는 생각을 했습니다.
따라서, 한번도 해본적 없는 "읽기"훈련을 해보려 합니다.
왜 오픈소스?
제가 생각하는 오픈소스의 장점은 다음과 같습니다.
- 우리가 많이 사용하지만 실제 코드는 모른다
(사용안해본 개발자가 없는 SpringBoot , React..) - 이리 올라와 있는 Issue를 중심으로 읽기 가능
- Contribution을 통한 지식공유와 피드백
특히나 지식공유가 가능하다는게 매우 마음에 들었습니다.
제가 블로그를 운영하는 이유도 제 나름의 지식공유 목적이며
나의 경험을 통해 누군에게 도움을 줄 수 있다는 것에 큰 가치를 두기 때문입니다.
오픈소스를 고른 기준
- 실제로 사용해 본 것
- 활성화된 업데이트와 커뮤니티
- JVM기반 프로젝트
- Fork , Star 500++
- 실제로 Contribution 할 수 있는 것
제가 사용해봤던 서비스중 오픈소스인 것들을 리스트업했고 이중 실제로 Contribution까지 할 수 있는 것을 찾아봤습니다.
(SpringBoot, Spring Data JPA....등 정말 거대하고 복잡한 것들은 전부 제외했습니다)
또한 이미 등록돼있는 Issue를 중심으로 Contribution에 적합해 보이는 것을 찾았습니다.
#48in24: Add approaches to Parallel Letter Frequency · Issue #2710 · exercism/java
The Parallel Letter Frequency exercise on the Java track is being featured in the #48in24 challenge, which means that we expect an influx of students attempting to solve it during that week. It wou...
github.com
필요한 부분을 가려내는 "메타읽기"
막상 시작해보니 생각보다 읽어야 할 내용이 방대했습니다.
커밋 자체도 3000개가 넘으며 구조를 확인하기 위해서는 상당한 시간이 필요해 보였습니다.
그래서... 비슷해 보이는 PR을 확인해 봤습니다.
#48in24: Add approaches to Knapsack · Issue #2712 · exercism/java
The Knapsack exercise on the Java track is being featured in the #48in24 challenge, which means that we expect an influx of students attempting to solve it during that week. It would be nice if the...
github.com
.approaches 아래의 파일들이 PR로 올라온 내용입니다.
그렇게 읽어보던중 다음의 링크를 발견합니다.
링크를 좀 확인해보니 knapsack/introduction.md의 내용은Dig deeper
아래의 내용을 담당하며
https://exercism.org/tracks/java/exercises/knapsack/dig_deeper 다음의 url을 가짐을 확인했습니다.
또한 .approaches/dynamic-programming는 Dig deeper옆에 보이는 Approaches의 내용이며 https://exercism.org/tracks/java/exercises/knapsack/approaches/recursive 다음의 url을 가집니다.
이를 통해...
내가 기여할 부분은 https://exercism.org/tracks/java/exercises/parallel-letter-frequency/dig_deeper 의 url을 가질 것이며
.approaches 아래에 페키지를 추가한다면
https://exercism.org/tracks/java/exercises/parallel-letter-frequency/dig_deeper/{내가 생성할 페키지이름} 의 url일 것임을
유추할 수 잇었습니다.
또한 snippet.txt
는 예시코드 , content.md
는 approaches의 내용을 의미하겠네요
그럼 이 Issue에 기여하기 위해 필요한 구조에 대한 이해는 끝났습니다.
내용만 작성하면 되는것이죠
Add approaches for Parallel Letter Frequency by masiljangajji · Pull Request #2863 · exercism/java
pull request Approaches for Parallel Letter Frequency, ready for review! Resolves #2710 Reviewer Resources: Track Policies
github.com
사실... PR만 올리면 끝날 줄 알았는데 생각보다 리뷰를 정말 꼼꼼하게 해주더라구요 그래서
코멘트를 31개 받아본건 처음인것 같은데.. 결국엔 제가 이겼습니다.
영어로 작업해야 하는 부분이 많아서 개인적으로는 시간이 좀 걸렸네요
이렇게 Contribution까지 해보니...
일하는 방식과 비슷하다는 생각을 했습니다.
- 거대한 코드베이스에서 내가 필요한 부분만 확인
- 전체 프로젝트를 읽기보다는 추측을 통한 메타 읽기
- 실질적인 기여
프로젝트 구조를 파악하고 코드를 읽는 훈련을 하고싶다면 오픈소스의 Issue를 중심으로 읽어내는 것이 정말 좋은 방식인 것 같습니다.
또 내가 작업한 작업물이 많은 사람들에게 공유되어 도움일 된다고 생각하면 뿌듯하기도 합니다
https://exercism.org/tracks/java/exercises/parallel-letter-frequency/dig_deeper
같이 보시면 좋은 발표 영상입니다.
'오픈소스' 카테고리의 다른 글
Lombok과 Record - Null 체크 이슈 파헤치기 (0) | 2024.11.20 |
---|