- 내 생애 첫 Opensource Contribution2024년 11월 25일 23시 42분 07초에 업로드 된 글입니다.작성자: nickhealthy
저번 주 토요일에 오픈소스 오프라인 밋업 행사가 있어 참가하게 되었다.
사실 거창하게 제목을 달았지만 몇 줄 안 되는 코드로 컨트리뷰션을 하게 되었다. 엄청난 기능을 만들거나, 버그를 고쳐서 컨트리뷰션이 된 것은 아니었지만, 어렵게만 느껴졌던 오픈소스에 기여를 했다는 것이 뿌듯하여 기록으로 남기려고 한다.
행사에 참가한 메인테이너분들과 참여자분들의 도움도 있었지만, Rust라는 언어를 모름에도 '코드를 계속 따라가고 적용해 보면서 어떤 부분을 고치면 되겠다'는 분석을 통해 커밋을 한 게 성취감이 많이 느껴진 거 같다.
물론 모듈화나 코드가 깔끔했던 것은 물론이고, 메서드 이름만으로 어떤 동작을 하는지 유추할 수 있을 정도여서 분석이 가능했다. 인정.
이번 포스트에서는 컨퍼런스에서 배운 내용이나 경험하고 나서 느낀 점을 정리해 보려고 한다.
행사 내용
내가 참여한 오픈소스는 에버노트, 노션 등 현재 많은 노트 관련 애플리케이션이 많지만 내가 직접적으로 관리할 수 있는 노트 앱이 없어서 만드셨다고 한다. 운영 서버를 설치할 필요 없이 로컬 파일, Git, MongoDB 등 원하는 저장 방식을 선태갛여 노트를 관리할 수 있다.
또한 Vim에서 영감을 받아 편리하게 마우스 조작 없이도 키보드로만 조작 가능하게 만든 노트 앱이며, Rust 기반으로 작성되어 있다.
메인테이너분께서는 이전에 gluesql 이라는 DB도 오픈소스로 만드신 거 같다.
행사 내용의 전체적인 소개는 아래와 같다. - 행사링크
더보기행사 소개
국내 오픈 소스 프로젝트 중 일부 프로젝트의 메인테이너 분들을 직접 초대해 하루동안 다양한 분들과 기여할 수 있도록 기회를 만들어주는 오프라인 밋업 행사입니다. 스탭 뿐만 아니라 모든 메인테이너와 참가자의 자발적인 참여로 행사가 운영되며, 소소하지만 즐겁고 따뜻한 컨트리뷰션 활동을 지지합니다.
연사 및 메인테이너 소개
Keynote Speaker 01. 박구삼 님 | 엔씨소프트 클라이언트 엔지니어
- Client Developer at NCSOFT
- 2022 오픈소스 컨트리뷰션 아카데미 멘토
- Microsoft MVPKeynote Speaker 02. 김지호 님 | 파이토치 한국사용자모임 운영진
- Data Scientist at AIMMO
- 2024 오픈소스 컨트리뷰션 아카데미 멘토
- PyTorch 등 활용한 인공지능 모델 개발Maintainer 01. 송지원 님 | 나인크로니클
- 프로젝트 소개: 나인크로니클은 관리자 없이 플레이어들에 의해 운영되는 오픈 소스 온라인 RPG 게임입니다. 이를 위해 나인크로니클은 이더리움과 비트코인처럼 게임 전용 블록체인을 새롭게 구현했습니다. libplanet(c#), launcher(electron), client(unity), js 라이브러리 등 다양한 제품들이 관리되고 있으며, 모더들을 위한 개발 생태계도 구축하고 있습니다. 간단한 오타수정 이슈부터 블록체인 엔진에 기여하는 이슈까지 다양한 저장소와 이슈들이 있으니 누구나 쉽게 기여하실 수 있습니다.
- 저장소: https://github.com/planetarium
- Developer Portal: https://nine-chronicles.devMaintainer 02. 문태훈 님 | Glues
- 프로젝트 소개: Glues는 Rust로 작성된 Vim에서 영감을 받은 터미널 기반(TUI) 노트 작성 애플리케이션입니다. 운영 서버를 설치할 필요 없이 로컬 파일, Git, MongoDB 등 원하는 저장 방식을 선택하여 노트를 관리할 수 있습니다. 키보드만으로 모든 조작이 가능한 TUI 앱 개발과 Vim 상태 머신 구현에 관심 있는 분들은 직접 기능을 기여해보실 수 있습니다.
- 저장소: https://github.com/gluesql/gluesMaintainer 03. 홍민희 님 | Fedify
- 프로젝트 소개: Fedify는 TypeScript용 ActivityPub 서버 프레임워크입니다. ActivityPub은 분산형 소셜 네트워크를 위한 W3C 표준 프로토콜으로, Meta의 Threads, Mastodon, Misskey 등의 다양한 소셜 미디어 서비스들이 ActivityPub을 구현하고 있습니다. 즉, Fedify를 이용해 만든 소프트웨어는 상기한 여러 소셜 미디어 서비스들과 연동이 가능하게 됩니다.
- 저장소: https://github.com/dahlia/fedify
- 프로젝트 웹사이트: https://fedify.dev/
- 기여 가이드: https://github.com/dahlia/fedify/blob/main/CONTRIBUTING.md
- 보안 가이드: https://github.com/dahlia/fedify/blob/main/SECURITY.mdMaintainer 04. 정주영 님 | daldalso
- 프로젝트 소개: Next.js + Tailwind 기반 프로젝트를 위한 라이브러리들을 만들고 있어요.
사용법 문서 작성이나 테스트 코드 작성부터 기여 가능합니다.1. 타입 안전한 다국어 지원 라이브러리 (@daldalso/i18n)
2. 타입 안전한 페이지 라우팅 및 API 호출 라이브러리 (@daldalso/next-typed-route)
3. 보다 효율적인 Tailwind 활용 라이브러리 (@daldalso/tailwind-base)- 저장소: https://github.com/stars/JJoriping/lists/daldalso
History ofOpen Contribution Jam
🔎 Hacktoberfest 2023
- 참여 프로젝트: 식탁보, Simperby, YouTube Subtitles Extractor, Jax KR, GlueSQL, ZIO, AnyPass, Pytion-MySQL-Replication 등
https://event-us.kr/hacktoberfestkorea/event/71998🔎 Hacktoberfest 2022
- 참여 프로젝트: 식탁보, 플라네타리움, Sorrygle, Riiid-pbkit, Just News, Backend.AI, Pytorch 한국어 번역 등
https://event-us.kr/hacktoberfestkorea/event/48142이외 관련 링크
NUGET - 패키지 다운로드 수 확인(?) - 얼마나 많이 쓰는 프로젝트인지 유추 가능
정주영 메인테이너님의 이전에 했던 프로젝트 - 끄투코리아
오픈 소스 프로젝트란?
- 소스 코드가 공개되어 누구나 접근하고 기여할 수 있는 프로젝트
소스를 세상에 공개하는 이유
- 같은 문제로 고민하고 있는 개발자들을 돕기 위해서
- 더 나은 소프트웨어로 성장하기 위해서
기여하면 나는 뭐가 달라질까
- 기술적 성장
- git/github 사용 숙련도 향상
- 프로젝트 코드 스타일에 맞춰 코딩 규칙 익히기
- 프로젝트가 다루는 도메인에 대한 이해
- 오픈소스 정책 및 라이선스 이해
- 문제 해결 능력 강화
- 예상치 못한 문제를 탐구하며, 분석/개발 능력 향상
- 코드 충돌이나 의존성 문제 해결 능력 향상
- 필요한 리소스 탐색/활용 능력 향상
- 의사소통 능력 강화
- 이슈, PR, 코드 리뷰 코멘트 등 자신의 생각을 명확히 전달하기
- 국내/외 다양한 사람들과 소통하기
- 서로에게 도움이 되는 건설적인 방향으로 피드백을 주고 받기
- 리더십 & 책임감
- 다른 기여자를 멘토링하며 리더십 경험
- 기여한 작업물의 품질 유지
기여는 이렇게 시작한다!
- 내가 사용하면서 불편한 것을 해소한다. - 새로운 문제 발견 및 해결
- 첫 시작으로 적합한 기여를 찾는다. - 이슈 티켓 해결
- GitHub 검색창에 `is:issue is:open label "good first issue"` 입력해 기여하고 싶은 문제를 찾는다.
- 관심 있는 프로젝트의 `Issues` 탭에 들어가 `good first issue`를 검색한다.
- 테스트 커버리지 만들기
- 작은 기여로 시작한다.
- 문서 오타 수정, 번역 등 부담이 적은 작업부터 시작한다.
- 행사나 커뮤니티 활동에 참여한다.
컨트리뷰션 정보
기여한 오픈소스: gluesql/glues
기여한 내용: https://github.com/gluesql/glues/pull/68감격스럽다.🥹
느낀점
- 생각보다 힘들지 않았다.
사실 예전부터 '오픈소스 컨트리뷰션을 해보고 싶다'라는 생각만 있었는데, 막상 시작하려니 어떻게 해야 하는지도 모르겠고 코드는 어떻게 분석해야 할지 막막했다. '내가 혹시 실수해서 이 프로젝트에 피해를 주진 않을까'라는 생각도 했는데 많은 테스트와 검증 과정을 거쳐 반영하기 때문에 그런 걱정은 하지 않아도 될 거 같다. 심지어 PR를 날리는데 어떤 부분을 빼고 추가하면 좋을지에 대한 피드백도 주셔서 편안하게 과정을 수행한 것 같다. - 모듈화가 잘 되어 있다.
사실 Rust 언어도 모르는데 어떻게 컨트리뷰션을 할 수 있었는지 나 스스로도 신기하다. 그런데 신기할 정도로 역할과 책임이 명확하게 나눠진 것을 볼 수 있었다. 어떤 패키지에 어떤 기능들이 있다는 것을 알고 나서, 프로젝트를 살펴본 시간이 얼마 지나지도 않았지만 이곳저곳을 왔다 갔다 하며 코드를 살펴보는 나를 발견할 수 있었다. 모듈화의 중요성도 다시금 깨닫는 시간이었다! - 클린 코드란 이런 것인가..
처음 코드를 본 사람도 별도의 주석 없이 메서드 명이나 이전에 작성되어 있던 코드들을 보면 어떤 코드가 어떻게 작동하는지 유추할 수 있었다. 프로그래밍을 처음 배울 때부터 지금까지 수없이 들은 말 중에 다른 사람이 코드를 봐도 이해할 수 있는 코드가 좋은 코드라는 것을 들어왔는데 이번에 절실히 느껴본 것 같다. 지금 당장 클린 코드를 만들어 낼 순 없겠지만 나도 부단히 노력해서 클린 코드를 작성할 수 있도록 해야겠다!
다음글이 없습니다.이전글이 없습니다.댓글