티스토리 뷰

일상

오픈 소스 기여 후기 2

애쿠 2024. 8. 20. 11:29

 

5월 초에 인제님이 주최하는 오픈소스에 참석하고 석달 반이 지났다.

2024.05.13 - [일상] - 오픈소스 멘토링 후기

 

최근에는 많은 기여활동을 못하고 있지만, 오픈소스 멘토링 당시 작업했던 게 머지된 김에

 

오픈소스 멘토링 외에도 몇 가지 이슈를 더 다룬 것들이 기억에서 사라지기전에 정리해보려고 한다.

 

1. Spring Cloud AWS 기여(2머지)
2. JTokkit 기여(머지)
3.Azure SDK for Java 기여(실패)

 

 

총 3가지 프로젝트에 기여하려고 시도했었고 사실상 3번은 실패나 다름없었다...

 

하나씩 정리해보자

 

1. Spring Cloud AWS 기여

오픈소스 멘토링 지원 당시에는 Spring Data JPA, Spring Cloud OpenFeign을 전달드렸었다.

 

이리저리 생각해보다가 시작날에 AWS에 대한 공부를 더 해보고 싶어서 Spring Cloud AWS를 선택했고,

 

두 가지 메인테이너가 제시한 이슈로 변경했다.

 

https://github.com/awspring/spring-cloud-aws/issues/1144

https://github.com/awspring/spring-cloud-aws/issues/1145

 

이 중 두번째 이슈인 #1145가 어제(2024.8.19) 석달 반만에 머지되었다.

 

이슈에 대해 짧게 설명하면, SQS에서 사용할 메시지 컨버터를 수동으로 정의하면 AutoConfiguration으로 설정되는 디폴트 설정들을 가져오지 못하는 현상이 있었다.

 

그래서 메시지 컨버터를 @ConditionalMissingBean으로 처리해서 수동으로 Bean을 동록해도 AutoConfiguration을 사용할 수 있도록 변경해야하는 이슈였다.

 

자세한 설명은 이전 포스팅에 작성해두었다.

 

이름이 박제됨

 

첫 번째 이슈인 #1144가 상대적으로 복잡한 내용이다.

 

SQS에 send를 할때, ContentType을 application/json으로 설정하고 payload를 json 형태의 String으로 전달하면 SQS가 제대로 인식하지 못하는 문제가 있었다.

 

이 문제를 분석하려고 오픈스택도 써보고, 실제 SQS도 연동도 해가면서 메인테이너와 지속적으로 소통해가며 문제를 해결했다. (답장은 느리지만 다행히 메인테이너가 호의적이었다.)

 

이 이슈는 PR을 만들고 현재 대기 상태이다.

 

머지가 된 이슈보다 상대적으로 늦게 PR을 마무리하기도 했다.

 

이 글을 쓰는 중에 이 PR이 머지되었다. 정말 우연이지만 재밌는 상황이다.

 

 

머지까지 석달 반이나 걸렸는데, 불만을 가지면 안되는게....

 

오픈소스는 사실상 봉사활동에 가깝다는 걸 생각해야한다.

 

이 사람들도 자기 시간을 쪼개서 오픈소스에 기여하고 유지보수를 해주는 것이다.

 

최근 몇달은 메인테이너들이 바쁜 시즌 + 휴가철이라 리뷰나 업데이트가 느리다고 한다.

 

메인테이너가 많고 더 적극적인 프로젝트들도 있겠지만, 내가 기여를 시도한 프로젝트들은 아쉽게 그렇지는 않았다.

 

그래도 기다리니까 머지가 되긴했다. 올바른 분석을 도와준 인제님 덕이 컸다..

 

2. JTokkit 기여

https://github.com/knuddelsgmbh/jtokkit/issues/80

https://github.com/knuddelsgmbh/jtokkit/pull/97

 

사실 첫 머지는 JTokkit였다.

 

JTokkit은 내가 자주 사용하는 오픈 소스 라이브러리인데, 자바에서 제공하는 인공지능 모델의 토크나이저다.

 

이 이슈는 토크나이저를 원하는 토큰 사이즈만큼 자를 때 문자열의 어느 위치까지 잘렸나를 알고 싶은데 해당하는 API가 없다는 이슈였다.

 

PR이 머지된 것도 아니고, Spring Cloud AWS처럼 박제는 안되서 내가 기여한게 맞나? 했지만

 

메인테이너가 머지하면서 참고했다고하니 기여한게 맞다고 하셨다. - 인제님 피셜

 

실제로 테스트 코드는 그대로 가져다썼다.

 

3. Azure SDK for Java

https://github.com/Azure/azure-sdk-for-java/issues/39773

 

사실 이 글을 쓰게 된 가장 큰 원흉이다.

 

내가 분석한게 맞다면, 외부기여자가 Azure SDK에 기여를 하려면 다음과 같은 절차에 따라야 한다.

 

1. Azure REST API Specifications에 만들려고 하는 API를 정의해야함

https://github.com/Azure/azure-rest-api-specs

2. 이 Specifications는 TypeSpec이라는 MS에서 사용하는 타입스크립트 스펙으로 만들어져있음

3. 이 레포지토리에 먼저 머지가 되고, SDK 작업을 시작해야함

 

그래서 TypeSpec을 분석해서 Azure REST API Specifications을 만들고, PR을 만들려고 보니

 

내가 모르는 preview 일정 같은 게 있는 것 같아서 문의를 남겼는데, 메인테이너가 아무런 응답이 없었다.

 

무슨 의미인지 관련 개발자들을 호출해주기도 했는데, 그 사람들도 응답이 없었다.

 

몇 달간 대기 상태에 있다가 갑자기 마일스톤 일정이 잡혔다면서 자기들끼리 일정을 잡기 시작했다... 

 

TypeSpec 분석에 꽤 시간을 소모했던지라 실망이 컸다.

 

메인테이너들이 호의적이지도 않고, 외부에 일정 공유도 하지 않으며

 

멤버들끼리 내부 일정으로 진행하는 오픈 소스도 있는 것 같다...

 

이런 오픈 소스는 어떻게 구분해야 좋을지 모르겠다.

 

마치며

인제님은 기억하실지 모르겠지만, I/O Extended 2024 Incheon 세션 후 잠깐 이야기를 나눴었다.

 

그때, 오픈소스 머지가 석달째 안되고 있어요라고 살짝 징징거렸었는데

 

얘네도 자기시간 쪼개서 하는거니까 어쩔 수 없이 기다려야한다고 말씀해주셨다.

 

그리고 지들끼리 하는 오픈소스 아닌 오픈소스들도 있으니 어쩔 수 없다는 것도...

 

Azure Java SDK의 openAI 가 개인적으로 TypeSpec에 대해 제법 분석을 했었기 때문에,

 

다음에 기회가 된다면 다시한번 물고 늘어져 봐야겠다. mssfang 아저씨 제가 기억하고 있어요...

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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 31
글 보관함