Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

마로의 개발일지

오픈소스 컨트리뷰트 해보기 본문

기록

오픈소스 컨트리뷰트 해보기

maro0201 2023. 9. 1. 18:44

오픈소스를 알게 된 계기

 오픈소스 컨트리뷰트라는 말을 처음 알게 된 건 생활코딩 유튜브 페이지를 통해서였다. 해당 페이지를 구독 중이었는데 공지사항으로 OSS에서 오픈소스 컨트리뷰톤을 진행한다고 하길래 '이게 뭐지?' 하고 찾아봤었다. 그 땐 SSAFY를 하기 전이었고 의욕만 앞서고 실력은 없었기에 신청했지만 떨어졌다.

 

오픈소스 나도 해보자

 이후 취업을 하고 바쁘게 살다 퇴사한 지금 다시 생각이 났다. 물론 채용 공고에 적혀있는 오픈소스 컨트리뷰트 경험자 우대가 눈에 밟힌 것도 있었다. 그래서 다시 한번 OSS의 오픈소스 컨트리뷰톤에 지원했는데 떨어졌다. 여러 이유가 있겠지만 무튼 나보다 뛰어난 사람들이 많았나 보다. 그런데 생각해 보니 '굳이 저걸 해야 오픈소스 컨트리뷰트를 할 수 있는 건가?'라는 생각이 들었다. 그래서 인터넷으로 오픈소스 컨트리뷰트 하는 법을 찾아봤다.

 유튜브 채널에서 영어로 검색을 했더니 많은 자료가 나왔고 모두들 친절하게 설명해주었다. 대부분 원하는 프로젝트를 찾고, Issues와 컨트리뷰트에 관련된 md 파일을 찾아보라고 했다. 하지만 가장 큰 문제는 원하는 프로젝트를 찾는 것이었다. spring 같은 유명한 프로젝트들은 이미 많은 기여자들이 있었고 기여를 하고 싶어 하는 사람들도 많았기에 피했고, 내가 그나마 좀 잘 알면서 인지도도 있지만 경쟁자가 없는 프로젝트가 없을까 고민했다.

 

오픈소스 컨트리뷰트 하기

 그러던 와중 내가 지금 공부하는 블록체인에서 사용되는 web3j라는 프로젝트를 발견했다. web3j는 Java 어플리케이션에서 이더리움의 클라이언트와 통신할 수 있게 해주는 프로젝트이다. Javascript가 주로 사용되는 블록체인 분야에서는 상대적으로 web3js에 비해 활용이 덜 되는 것 같았지만 내가 원하는 조건을 충족하는 프로젝트였다.

 그래서 해당 프로젝트의 내부를 살펴보며 기여할 수 있는 부분이 없는지 살펴보았고 정말 사소하지만 눈에 거슬리는 부분을 발견했다. exception 패키지가 존재하는데 CipherException 파일이 해당 패키지 외부에 존재하고 있었다. 기여할 수 있는 부분을 발견한 직후 해당 프로젝트를 fork 했고 InteliJ의 리팩토링 기능을 통해 파일을 패키지 내부로 옮겼다. 변경된 부분을 확인했을 때 문제가 될만한 부분은 없었고 그대로 PR 요청을 보냈다.

 하지만 PR전 checks 과정중 build에서 에러가 났고 이유를 살펴보니 import format이 따로 존재해 format violation이 발생했었다.

Execution failed for task ':spotlessJavaCheck'.
> The following files had format violations:
      core/src/main/java/org/web3j/crypto/Bip44WalletUtils.java
          @@ -14,6 +14,7 @@
           
           import·java.io.File;
           import·java.io.IOException;
          +
           import·org.web3j.crypto.exception.CipherException;
           
           import·static·org.web3j.crypto.Bip32ECKeyPair.HARDENED_BIT;
  Run './gradlew :spotlessApply' to fix these violations.

처음엔 당황했지만 침착하게 오류난 곳을 확인했고 하단의 Run './gradlew :spotlessApply' to fix these violations. 를 보고 ./gradlew :spotlessApply를 terminal에서 실행했더니 자동으로 format이 수정되었다. 수정한 후에 push를 하고 comment를 남겨 수정했다고 알린 후 기다렸고 얼마 지나지 않아 merge가 되었다는 메일을 받을 수 있었다.

 덕분에 해당 프로젝트의 컨트리뷰터가 될 수 있었고 감개무량하게도 신버전 공지에도 올라오게 되었다.

(https://github.com/web3j/web3j/releases/tag/v4.10.3)

 

느낀점

처음엔 단순히 우대사항에 하나라도 더 해당되고 싶어서 시작했지만 막상 이렇게 컨트리뷰터가 되고 나니 많은 생각이 들었다.

- 오픈소스 컨트리뷰트는 생각보다 어렵지 않다. 다만 해당 프로젝트에 대한 관심이 많이 필요한 것 같다.

- 상당히 재밌고 뿌듯하다. 내가 도움이 됐다는 사실이 기분이 좋고 좀 더 기여하고 싶은 의욕이 생긴다. 왜 사람들이 오픈소스 컨트리뷰트를 계속하는지 알 것 같다.

- 앞으로는 이런 사소한 수정뿐 아니라 기능 구현도 할 수 있게 되고 싶다. 그러기 위해 좀 더 많은 공부와 실력을 쌓아야겠다.

- 당연히 이런 사소한 수정으로 채용 시 우대사항에 해당될 거라는 생각은 하지 않는다. 하지만 앞으로 더 나아가다 보면 우대사항에 걸맞은 기여를 할 수 있지 않을까 생각한다.

Comments