나의 첫 오픈소스 기여 여정

Mango
6 min readOct 9, 2024

--

나의 레포에 달린 첫 이슈와 내가 사용하는 라이브러리에 첫 기여 시도

개발자 생활을 하면서 오래전부터 막연하게 오픈소스 기여를 해보고 싶었고, 몇번의 시도가 있었지만 어디서부터 어떻게 코드를 파악해야 할지 막막하여 파악만 하다 끝이 났었는데 드디어 최근 다시 오픈소스에 기여해보고 싶은 마음이 뿜뿜 솟아 기여까지 이어지게 되었습니다. 오늘은 어쩌다 다시 이런 마음이 들게 되었는지 (매번 분기 혹은 반기별로 가끔 생각이 들긴 했지만), 그리고 기여까지 이어질 수 있었는지 이야기 해보는 시간을 가지려 합니다 :)

오픈소스 파악이 어려웠던 이유

기여를 시도 해보았던 많은 분들은 공감 하실것 같은데, 우선 기여를 하려는 대부분의 오픈소스 들은 덩치(프로젝트의 규모)가 매우 큰 경우가 많습니다. 그럼 나는 “해당 프로젝트를 어디서부터 어떻게 파악을 할 수 있을까?” 생각하게 되고 여기서 부터 매우 막막해 졌습니다.

구글 혹은 유튜브에 ‘오픈소스에 기여하는 법’에 대해 열심히 검색해보면 먼저 오픈소스에 기여를 하고있는, 그리고 처음엔 우리와 같은 경험을 가졌던 선구자 분들께서 자신의 노하우를 공유하고 있고 그것이 많은 도움이 되었지만 막상 다시 깃헙을 열어 선구자들의 노하우를 토대로 자신있게 오픈소스 프로젝트의 레포지토리로 들어가는 순간 다시 막막해지는 경험을 여러번 하였습니다.

그러다 작년 8월, 우연히 개발자 오픈채팅방에서 lux 라는 golang 기반에 lightweight 하고 빠른 성능의 웹 프레임워크를 만들고 계신 분이 계셨고 거기에 작게나마 기여를 해도 되냐는 동의를 구해 처음 기여를 해보게 되었습니다.

하지만 아직 남아있는 아쉬움

좋은 실력을 가지신 분의 초기 오픈소스에 기여할 수 있는 너무 좋은 경험 이었지만 아직 뭔가 아쉬웠어요. 조금 더 큰 규모의 많은 사람들이 사용하는 오픈소스에도 기여를 하고 싶었지만 아무런 액션도 없이 시간만 흘러가게 되었습니다.

그러던 어느날 Kotlin / Spring Boot 로 Layered architecture를 구성한 간단한 샘플 레포지토리이슈가 등록되었습니다. 순간 “어떻게 알고 내 프로젝트를 봐주신건지?” 라는 생각과 해당 주제로 2개의 아티클을 작성했던 적이 있어서 “블로그 아티클을 본건가?” 이런 생각도 들면서 나의 작업내용을 상세하게 봐주신 부분과 궁금한점을 이슈까지 남겨주신점들이 너무 감사하고 뿌듯한 감정을 느꼈습니다.

해당 레포지토리 관련 아티클

우연치 않게 생긴 동기부여

해당 사건을 계기로 다시 오픈소스에 기여를 해보고 싶다는 마음이 들게 되었고, “내가 자주 사용하는 라이브러리를 기여를 해보자” 라는 생각에 arrow-kt 레포지토리에 들어갔습니다.

우선 “테스트 코드를 먼저 파악하라” 는 내용이 먼저 생각나서 arrow-kt의 캐싱 모듈의 테스트 코드부터 파악하려 보니 작성된 테스트 코드가 없었습니다. 다른 모듈이나 기능들은 다 테스트 코드가 잘 작성되어 있었지만 하필 arrow-cache4k 라는 모듈만 테스트 코드가 작성되어 있지 않았고 “마침 잘됐다 그럼 이 기능을 파악해보고 테스트 코드 작성에 기여를 해보자” 라는 생각의 흐름으로 이어지게 되었습니다 :)

유명 오픈소스에 첫 기여 시도?

막상 테스트를 하려고 보니 arrow-cache4k 모듈에 테스트 관련 의존성이 참조되어 있지 않아 거기서 부터 시작해야 하더라구요.. 그래서 의존성 라이브러리 부터 추가하고 다른 모듈의 코드를 참조하여 build.gradle.kts 에 간단한 설정을 해준 후 아래와 같은 간단한 기능들을 테스트 해보았습니다.

1) Cache4k 에 정의된 모듈이 key-value 값을 캐싱(저장) 하고 조회 시 저장한 값이 조회 되는지
2) 유효하지 않은 key로 조회 시 의도한대로 어떠한 에러 발생 없이 null이 반환 되는지

위 코드를 작성하고 테스트를 실행해보는 순간.. 성공적이나 싶었지만? 자바 버전 관련 에러가 발생했고 에러 메시지를 파악해보니 모든 모듈이 공통으로 사용하는 com.android.library:8.7.0 의존성 라이브러리가 Java 17 부터 정상 지원 되는것 같아 보였습니다. 그래서 cache4k 모듈의 javaToolChain 설정의 자바 버전을 17로 올리고 테스트 코드를 수행했더니.. 드디어 정상동작이 되었습니다 :)

역시.. 간단하리라 생각했던 테스트 과정에서도 위와 같은 우여곡절 이라기엔 작은 관문들이 있었지만 결국엔 관문들을 넘고 6.2k stars 를 받은 프로젝트에 드디어.. 아래와 같이 기여를 시도할 수 있게 되었습니다 :)

PR 링크

첫술에 배부를 순 없다고 아직은 작은 성취이고 기여를 시도하는 단계 이지만.. 이제서야 확실히 첫 계단을 밟았다는 생각이 들었고 어떻게 원하는 프로젝트에 기여를 할 수 있을지 감이 잡히는 순간 이었습니다.

여기에 좀 더 나아가 “이슈도 한번 봐볼까?” 라는 생각에 arrow-kt의 이슈들을 보던 중 “한번 파악해보자” 싶은 이슈가 눈에 들어왔고 파악하던 중 신규 버전에서는 수정이 되어있는 부분이라 코멘트를 남겨드렸습니다.

이렇게 조금씩 조금씩 기여를 하다보니 재미가 들리기도 하고 “더 이 프로젝트를 파악해서 많은 기여를 해보자” 라는 욕심도 들었어요.

Conclusions

arrow-kt 는 함수형 프로그래밍을 명령형 코드로 작성할 수 있게 해주는 kotlin 라이브러리 입니다. 특히 저는 arrow-kt의 Typed Error 를 아주 잘 쓰고 있습니다. 이렇게 한번 기여를 하고 나니 프로젝트를 파악하고 어떻게 기여해야 하는지 조금 감이 잡혔고, 앞으로 더 많은 기여를 할 수 있을것 같습니다.

하지만 아직 부족한것이 많기에 더 경험하고 선구자 분들께 더 많은 경험을 공유받아야 겠다는 생각도 들더라고요. Line 개발자 분께서 오픈소스 멘토링을 하시는걸로 알고 있는데 여기도 다음 기수가 오픈되면 한번 신청 해봐야겠다는 생각이 들었습니다 :)

--

--

Mango
Mango

Written by Mango

Wanna be a good programmer

Responses (1)