오픈소스 기여 과정 공유 (feat. 식탁보)

즐겨찾기 기능 추가 PR by atawLee · Pull Request #193 · yourtablecloth/TableCloth (github.com)

이번에 식탁보에 기여하면서 오픈소스에 대한 기여 과정에 대해서 정리해봅니다.

0. 기여하는 이유

관심있는 소스를 분석하기 위해서
이미 남들한테 많이 알려진 소스의 경우 전체적인 양이 꽤 됩니다. 이미 방대해진 소스를 목적없이 보는 것보다는 이슈를 해결하면서 기여해보는게 원하는 소스가 어떤식으로 구성되어있는지 훨씬 빠르게 익힐 수 있습니다.

1. 이슈 선정

관심있는 소스가 생긴 경우 제가 해볼만한 이슈가 있는지부터 확인 합니다. 어떤 이슈가 처리가 안되고 있다면, 저는 우선 이슈 처리 하겠다고 먼저 이슈 리플에 달아둡니다. 처리 하는 도중에 다른 사람이 처리 해버리면 허무할 것 같습니다.

2. 코드 확인

내가 만드는 기능이 어떤식으로 돌아갈지 먼저 생각해 봅니다.
단순히 즐겨 찾기였으므로 어렵지 않았습니다.

즐겨찾기로 지정하게되면 어딘가에 지정한 것을 저장해두고 사이트 리스트를 불러올때 즐겨찾기 항목들과 매핑하면 됩니다.

기존소스에서 어디서 리스트를 보여주고 있고 영속성 저장은 어디서하는지 찾아 본 뒤, 내가 어떤식으로 할지 정해봅니다.

식탁보앱을 사용하면서 저장 로직이 어딨을까를 찾아봅니다.


식탁보앱에서 사이트목록을 더블클릭하면 다음과 같은 Dialog가 보여지는데 밑에 보면
일주일 동안 이화면을 보지 않도록하는 내용이 있는데,
저장하지 않으면 가능한 내용이 아니므로 이 버튼에 대한 코드를 확인 하였습니다.

image
그리고 즐겨찾기 활성화는 이사이트 아이콘에서 버튼이 있으면 좋겠다고 생각했습니다.
계획은 여기까지만 우선 나왔고, 더 좋은 생각이 있을까 싶어서

대략적인 내용을 이슈에서 물어보았고 정현님이 승인을 하셔서, 이대로 작업 방향을 잡았습니다.

3. 코드 수정

오픈소스 코드 수정 시에 중요한 것은, 기존 코드의 방향성을 해치지 않는 방향으로 작업하는 것 입니다.

커맨드 클래스를 생성하여 주입하는 방식으로는 이번에 처음보게 되었지만, 이미 기존소스에 좋은 예시가 많이 있기 때문에 기존에 있는 코드들을 따라서 작업했습니다.

작업한 대략적인 기능은 즐겨찾기 저장, 즐겨찾기 불러오기, 즐겨찾기 목록 입니다.
기능을 만들고 전반적인 테스트를 진행하고, PR을 진행 했습니다.

4. PR

이번에 PR과정은 이전에 Polly에 기여할 때 보다 매우 편했습니다. CLA(Contributor License Agreement)에 서명하고 대략적인 변경 사항을 기입하고, 영향이 큰 변경사항은 추가적으로 더 내용을 강조하여 PR을 올렸습니다.

다행히 별다른 이슈는 없었고, Merge 되었습니다.

사실 이과정에서 해외소스의 경우에는 메인테이너와의 소통이 필요한 경우도 있고, 문서작업을 해달라고 하는 경우도 겪었는데, 혼자 고민하시기 보다는 적극적으로 다른 컨트리뷰터들과 소통해서 빠른길을 찾는 것을 추천 드립니다. 그리고 저는 영어를 못하는데 DeepL과 ChatGPT로 해결했습니다.

5. 얻는 것

폴리 기여 경험에서도 올렸지만, 역시 평소에 접하지 않은 코드를 접해볼 수 있습니다.
이번에는 Command Pattern에 대한 접근방식을 넓힐수 있는 기회가 되었고,
Xunit 에서 wpf 테스트가 안되는줄 알았지만 xunit.stafact라는 라이브러리를 이용하면 xunit을 이용해서 wpf도 가능하다는 것도 알게되었습니다.

오픈소스 기여는 투자 시간에 비하여 얻는 지식이 많습니다.

16개의 좋아요

컨트리뷰션 해주신 내용은 다음 버전인 1.13.0 버전에 약간의 UI 다듬기 작업을 거쳐서 배포될 예정입니다. 정말 고생 많으셨고, 감사드립니다. :bowing_man:

4개의 좋아요

@종훈_이 이렇게 사례까지 공유해주시는 것은 정말 의미 있고 멋진 일이네요.
종훈님 접근 방식과 과정이 많은 분들에게 좋은 영감을 줄 것 같습니다.

그리고 지난 해 구글 발표, 최근 API 관련 세미나 둘 다 모두 개인 사정으로 참석하지 못해 아쉬웠는데 올해도 자주 뵐 수 있었으면 좋겠습니다~

3개의 좋아요

다음주 열리는 밋업에 참석 예정입니다. :grinning:

3개의 좋아요