본문 바로가기
오픈 소스

오픈 소스 컨트리뷰터가 되다.

by 쎄오SseO 2023. 12. 23.

 

23.10.11 ~ 23.11.04 까지 GDG 송도에서 진행하는 오픈 소스 스터디에 참여했던 후기입니다.

 

GDG 송도 측에서 진행했던 오픈 소스 스터디 1기에 참여하고 너무 배울 게 많고 좋았어서 이번 오픈 소스 2기에도 참여하게 되었습니다.

 

 

 

 

스터디 진행

 

목표는 각자 관심 있는 오픈 소스에 PR 해보기 로 하였고

평일에 하루 온라인으로 30분 정도 스터디장님이 멘토로 도와주시고

토요일에는 추가로 도움이 더 필요하신 분들이 나와, GDG 송도 측에서 대여해주신 장소에서 스터디장님이 추가적으로 도움을 주셨습니다.

 

스터디장님이신 인제님께서 각각 이슈 선정도 도와주시고

코드를 분석하고 이슈를 해결하는 과정에서 막히는 부분과 더 좋은 방법이 무엇인지 봐주셨습니다.

(인제님 짱!)

 

 

 

 

 

PR 이슈 선정

 

저는 다음과 같은 목표로 PR 이슈를 선정했습니다.

  1. 이슈를 해결하고 PR을 해보는 과정까지 빠르게 진행해보기 위해 쉬운 것부터 차근차근 하기
  2. 안드로이드 관련 오픈 소스

 

오픈 소스를 접해보지 않은 사람들은 ‘오픈 소스에 기여하는 것은 진짜 대단한 사람들이 하는 거 아니야?’ 라고 생각하며 두려움을 가지고 있을 수도 있습니다.

생각보다 쉬운 이슈들도 많기 때문에 저처럼 정말 쉬운 것들로 차근차근 도전해보며 두려움을 깨는 것부터 해보시는 게 좋을 수도 있습니다.

 

그리고 관심 있는 오픈 소스에 기여하는 것.

잘 모르는 오픈 소스는 관심도 떨어질 뿐만 아니라 코드를 파악하기도 어려울 것입니다.

그래서 저는 안드로이드 관련 오픈 소스부터 경험하고자 했습니다.

 

 

 

 

 

 

https://github.com/googlemaps/android-maps-utils/issues/1228

 

Kmz with empty coordinates · Issue #1228 · googlemaps/android-maps-utils

Summary If a kmz or kml has a empty coordinate it will cause java.land.ArrayIndexOutOfBoundsException Expected behavior The file should be parsed successfully, it on the server in Rails Observed be...

github.com

 

제가 선정한 이슈로, googlemaps의 android-maps-utils 오픈 소스의 이슈입니다.

 

 

 

 

 

Kmz, Kml 파일은 좌표를 나타내는 마크업 랭기지로 위와 같은 형태입니다.

 

 

 

 

하지만, 위처럼 coordinates가 비어있을 때, ArrayIndexOutOfBoundException을 일으키게 됩니다.

 

 

 

이처럼 ArrayIndexOutOfBoundException을 일으키는 것은

사용자 입장에서는 Coordinates가 비어있다는 것을 한 눈에 파악하기 어렵기 때문에 ArrayIndexOutOfBoundException보다 명확한 표현을 해주고자 했습니다.

 

 

 

 

 

 

해결

 

이슈를 올려주신 분께서 친절하게 Stack trace까지 올려주셨기 때문에 쉽게 해결할 수 있었습니다.

그리고 코드들이 클린 코드로 아주 잘 짜여있어서 코드를 파악하기 너무 쉬웠습니다.

 

 

 

 

Kml 파일은 파싱해서 마지막에 위 코드에서 LatLngAlt 객체로 변환을 합니다.

표시된 코드에서 비어있는 coordinates의 경우에 Latitude Index인 1에 접근하기 때문에 해당 오류가 나타났던 것이고 이를 명확하게 표현하는 것으로 해결했습니다.

 

 

 

 

명확히 오류를 표현하는 것으로 해결을 했고,

empty coordintaes에 대한 성공, 실패의 경우를 테스트 코드로 작성해 함께 PR을 요청했습니다.

 

 

 

 

정말 쉬운 이슈였기 때문에 일주일 만에 바로 PR 요청을 할 수 있었습니다.

https://github.com/googlemaps/android-maps-utils/pull/1241

 

fix: IllegalArgumentException is clearer than ArrayIndexOutOfBounds by SseO-KR · Pull Request #1241 · googlemaps/android-maps-

Motivation KMZ with empty coordinates throw ArrayIndexOutOfBounds. I think IllegalArgumentException is clearer than ArrayIndexOutOfBounds. Modification Add throw new IllegalArgumentException("...

github.com

 

 

 

 

 

 

Approved 그리고 Merge

 

오픈 소스 라이브러리들이 대부분 업무 시간 외의 개인 시간에 관리되기 때문에 응답이 오기 까지 기다림이 필요했습니다.

저도 잊혀질 때 쯤 코멘트가 달렸습니다.

추천을 해주신 대로 변경을 하게 되었고

 

 

 

 

approve가 된지 몇 일 후에 merge가 되어 첫 기여를 할 수 있었습니다!

 

 

 

 

 

 

배운 점

 

1. 클린 코드의 중요성

Stack Trace가 모두 나와있었지만 작성한 코드들이 한 눈에 보기 좋게 잘 작성되었기 때문에 빠르게 이해할 수 있었습니다. 클린 코드의 중요성에 대해 다시 한 번 느낄 수 있었습니다.

 

2. 항상 의도대로 되지 않는다

다른 스터디원들의 PR을 보면서도 많이 느꼈던 점 입니다. 개발자들은 항상 정상적인 데이터가 들어올 거라 생각하지만, 제가 해결한 이슈처럼 예상하지 않게 데이터가 들어올 수 있고 의도대로 동작하지 않을 수 있다는 점을 크게 느꼈습니다. 그렇기 때문에 테스트 작성을 하는 것이 가장 큰 예방 방법인 것 같습니다.

 

3. 오픈 소스 두려워하지 않아도 된다

제가 해결한 이슈처럼 쉬운 이슈도 존재하고 노력하면 되기 때문에 두려워할 이유가 전혀 없다는 것을 1기에 이어 또 느꼈습니다.

 

4. 문서화의 중요성

오픈 소스마다 컨벤션이 존재하고 많은 사람들이 이 컨벤션에 맞춰서 기여를 하려면 문서화가 중요하다는 것을 깨달았습니다.

그리고 저는 이슈를 쉽게 올려주셨기 때문에 해결을 빠르게 할 수 있었습니다. 문서를 알기 쉽게 작성해서 이슈를 빠르게 알리는 것 또한 중요하다는 것을 알았습니다.

 

5. 열심히 하시는 분들이 많다

대부분 직장인이신데도 열정적으로 하시는 모습들을 보면서 더 열심히 해야겠다는 동기 부여를 받았습니다. 취업을 해서도 계속 꾸준히 공부해야겠다고 한번 더 다짐할 수 있었습니다.

 

6. 컨트리뷰터 멋있다

비록 쉬운 이슈를 해결했지만 컨트리뷰터 목록에 제 프로필 하나가 올라간 것이 너무 뿌듯했습니다.

 

 

 

 

저도 오픈 소스 기여해보고 싶어요~!

https://open.kakao.com/o/ghrD0mUf

 

오픈소스 스터디 at GDG

#개발자 #오픈소스 #GDG

open.kakao.com

스터디장님이 오픈 소스 스터디 오픈 톡방을 만드셔서 운영하고 있습니다.

스터디에 대한 정보, 오픈 소스에 대한 정보를 전달해주고 계시니 관심 있으시면 참여해보시면 좋을 것 같습니다!