2021 Contribution Academy
2020 ~ 2018 Contributhon
전체보기

2021 오픈소스 컨트리뷰션 아카데미의 멘티로 참가하게되었다!
너무 참가하고 싶어서 지원공고가 뜨자마자 지원서를 제출했던 것 같다.
모집기간이 한달 가까이 되어서 지원하고 나니 아직 기간이 많이 남은 것 같아
지원서를 수정하고 다시 제출할까 하는 마음도 있었다.
그치만 마음뿐 실행에 옮기진 못했는데...사실귀찮

멘티에 선정이 되고 말았다!!! 


내가 지원한 팀은 react-analytics-provider인데, 멘토님이 무려 진유림 님이다!
이미 TIL 문화를 통해 유림님을 알고 있었고,
학교의 "오픈소스SW와 파이썬" 과목에서 교재로 팀 개발을 위한 Git, GitHub 시작하기
이 책을 사용했는데, 이 책의 저자셔서 더욱 알고 있었다.
그런데 무려 멘토로 만나뵙게 되다니! 같이 개발을 할 수 있다니!!! >_<
오늘 팀 발대식 및 미팅을 진행해주셨는데 직접 보니 너무 신기했당ㅎㅎㅎ
나도 멋진 주니어 개발자가 되어서 이런 멘토로 참여해보고싶다,,, 열씨미 해야징
암튼! 팀발대식에 앞서 전체 발대식 후기를 써보려고 한다.
요즘 핫한 게더타운을 이용해 진행되었는데, 게더타운을 이렇게 많은 사람들과 공식적인 용도로 사용해본 적은 없어서 매우 설레고 기대가 되었다.
발대식 전날 안내사항을 메일로 보내주셨는데, 게더타운 사용법과 더불어 미니게임 설명까지 있어서 더욱 기대가 되었고 열심히 준비하신 것이 보였다.
중간에 캡쳐를 하지 못해서 안내사항에 있는 사진을 가져왔다.ㅠ

발대식은 이 순서로 진행이 되었다.
13 : 30 ~ 13 : 35 오프닝 및 인사말
13 : 35 ~ 13 : 45 2021 오픈소스 컨트리뷰션 아카데미 소개
2021 오픈소스 컨트리뷰션 아카데미 발대식 후기
이전글
머리말
길면 긴 짧으면 짧았던 컨트리뷰션 아카데미 프로젝트는 끝났다. 하지만 이제 시작이다
활동
Challenges (21. 8. 7. - 21. 8. 31)
아예 아무것도 모르는 rust라는 언어와 이론상으로만 배웠던 dbms의 동작방식을 code로 보고 구현해보는 것이라 도대체 어떻게 할지를 몰랐다. 일단 엄격한 rust언어의 장벽에 갇혀 1달을 헤맸었던 것 같다. 긍정적으로 차근히 온라인 상에서 나와있는 책을 읽고 공부했다. 책도 이론에만 그치지 않는 예제와 함께 친절히 이해를 돕기 때문에 즐겁게 배운 것 같다.
하지만 항상 텍스트로만 이해했다고 여기고 직접 코드를 짜는 순간 내가 원하는 결과물이 쉽게 나오지 않는다는 좌절감을 알기 때문에 내가 완전히 이해했음을 확신할 수 있는 장치가 필요했다. 그렇게 퀴즈 형식으로 rust의 문법을 익히고 정답을 출력해볼 수 있는 repo를 멘토 분 중 한 분이 알려줘서 많은 도움을 받았다.

한 2주가 지나자 조금씩 보이기 시작했다. project의 code들이 1줄 2둘 씩 보이기 시작했다. 하지만 여전히 어려움은 있었다. 무엇을 보완해야할지, 개발할 점은 무엇인지 생각해서 pr을 날려야 하는 줄 알고 멘붕이 살짝 올뻔 했다. 이는 멘토님이 해결해 주셨다. 남들이 짜놓은 code를 기반으로 간단히 형태만 흉내내면 추가할 수 있는 간단한 함수를 test code와 함께 추가하도록 함으로써 git이 어떻게 돌아가는지 복습하고(fork, clone, push, commit, push, pr, merge) 성공적으로 첫 pr을 날리고 merge할 수 있었다.
Sql function REVERSE 기능 추가 (2021.08.07 ~ 2021.08.26) #265
Project의 경우 체계적으로 정리되어 있고 구현되어 있었던 folder, file을 통해 REVERSE 함수를 간단하게 추가. 하지만 전체적인 sql문들을 처리하는 방식이 현재로써는 table과 column이 만들어진 상태에 대해서만 동작하기 때문에 column명을 함수의 parameter로 넘겨 문자열을 뒤집어 반환하는 제한적인 기능만을 만듦. 기능 구현 후 검증을 위해 integration test를 작성해 추가.
2021 오픈소스 컨트리뷰션 아카데미를 마치며


2021 오픈소스 컨트리뷰톤에 참여하게 되었다.
나는 프론트엔드 오픈소스에 기여하는 Cracking Vue.js 팀으로 들어갔다!
활동을 시작하기 전에 오픈소스에 대해 기본 교육을 진행했다.!
기본 교육과 고급교육이 각각 4시간씩 진행된다.
Git 사용법과 오픈소스를 개발하는 법을 배운다!
Git 기본교육
1. Git fork & clone
예전에 정리한 것 이어지는 내용이다!Git 정리하기
commit : 파일을 바꾼 내용을 뜻한다.
프로젝트 복사는 fork 로 한다.
프로젝트에 들어가면 fork라는 버튼이 있는데 클릭하면 된다.

그럼 자신의 깃헙에 복사된 것을 확인할 수 있다.

그리고 자신의 로컬에 소스코드를 다운받아야 하는데 이것을 clone 이라고 한다.
clone은 이전 git 정리 글에 있다.
2. Git project Reading Skill
1. 가장 많이 개발한 개발자 찾기
[2021 오픈소스 컨트리뷰톤] - 오픈소스 교육

작년의 오픈소스 컨트리뷰톤에 이어 올해도 신청하였고, 1지망으로 신청한 RustPython 프로젝트의 멘티로 선정되었다.
GatherTown
코로나 상황이 악화되기 전이라 오프라인으로 진행되었던 작년의 발대식과는 달리, 올해는 온라인으로 진행되었으며 플랫폼은 게더타운이 사용되었다.
프로젝트별로 개별적인 루트로 연락했던 작년의 컨트리뷰톤과 달리 슬랙으로 통합되어 프로젝트별로 채널만 나누어 사용하는 것도 이번에 달라진 점이라는 건 여담.
난 올해 초에 진행된 TensorFlow Everywhere Korea에서 게더타운을 처음 접했는데, 상당히 흥미로운 플랫폼이었다.
살짝, 개발자 커뮤니티 사이에서 유행처럼 사용하고 있는 것 같기도...ㅋㅋ
주최측에서 보내주신 온라인 발대식 참가 안내서를 읽으며 발대식에 대한 기대감을 갖고 게더타운에 입장하였다.
게더타운에 들어가 블랙보드에서 출석체크를 하고 팀별로 자리에 착석하는 것까지는 문제 없었으나 본격적인 발대식을 시작하려고 하며 작은(?) 트러블이 있었다.
400명이 넘는 인원이 모여 진행하다보니 영상 공유에 제한이 있다거나 하는 이슈가......ㅎ
심지어 스트리밍 중인 유투브 화면에도 저 알림이 뜨기도.....ㅋ
발대식
[2021 컨트리뷰션 아카데미] 발대식

올해 하반기 오픈소스 컨트리뷰션 아카데미에 참여하게 되었다. 약 4~5개월동안 오픈소스 주제를 하나 선택해서 멘토와 함께 프로젝트에 기여를 하는 과정이다. 나는 원래 1지망으로 크로미움/블링크를 선택했으나, 안타깝게도 2지망으로 선택한 이더리움으로 배정이 되었다. 물론 이 역시 관심이 있었던 주제였기 때문에 올해 하반기에는 이 프로젝트에 몰입해서 재미있게 해 보려고 한다.
나의 경우 2019년 SW 마에스트로를 하면서 하이퍼레저 패브릭(Hyperledger Fabric)이라는 블록체인을 다룬 프로젝트를 했었던 경험이 있다. 그 당시에는 프라이빗 블록체인 기반 공연 티켓 어플리케이션을 만들었던 것으로 기억이 난다. 관련 발표 자료
첫 번째 주차 과제로는 이더리움 관련된 여러가지 질문들에 대해 나름대로 답을 준비하는 것이었다. 질문이 많아서 두 번에 나누어서 포스팅을 해 보려고 한다.

merkle patricia trie
•
머클 패트리시아 트라이(Merkle Patricia Trie)

merkle tree
•
머클 트리(Merkle Tree, Hash Tree)

Ethereum network
•
하나의 사용자가 생성한 스마트 컨트랙트 코드는 이더리움 클라이언트(이더리움 블록체인에 참여하는 노드)를 통해 블록에 포함된다. 따라서 다른 노드에서 코드가 복사되고 각 노드의 EVM에서 코드를 실행시킬 수가 있다.
•
이더리움 주소와 개인키의 조합을 계정(accounts)이라고 한다. 이더리움 계정은 이더 잔고를 보유하고 트랜잭션을 전송할 수 있다. 이더리움에는 다음 두 가지 종류의 계정이 있다.
•
하드포크: 암호화폐 네트워크에서 역 호환이 가능하지 않은 업그레이드
[이더리움] 1주차 과제 기본질문 - Basic — 오웬의 개발 이야기
전기컴퓨터공학부 정보컴퓨터공전공 신지홍, 윤승희 학생은 과학기술정보통신부에서 주최하고 정보통신산업진흥회에서 주관한 [2021 오픈소스 컨트리뷰션 아카데미]에서 대상(과학기술정보통신부장관상)을 수상하였다.
Chromium, OpenStack, RustPython 등 25개의 프로젝트가 참여한 이번 행사는 예비 컨트리뷰터 인재들이 자신의 잠재적 오픈소스 역량을 강화하고, 다양한 글로벌 기술 분야에서 코드 기여 뿐만 아닌 코드리뷰, 테스트, 버그리포트, 기능제안, 이슈댓글, 질문 & 건의, 번역, 문서작성 등의 다양한 방법으로 오픈소스 문화에 기여하는 기회를 제공하기 위해 개최되었다.
두 수상자가 참여한 프로젝트는 RustPython으로, Rust 언어로 Python 인터프리터를 구현해 CPython 호환을 목표로 한다.
약 두달간의 컨트리뷰션 기간동안, 신지홍 학생은 파이썬의 프로토콜 인터페이스, 틀린 이름 교정 제안 등 언어 핵심과 관련된 패치를 29건 제출하였고 윤승희 학생은 파이썬의 OS 모듈 스케줄러 테마를 잡고 기여하여 까다로운 의존성 문제를 여럿 해결해 4건의 패치를 제출했다.
두 학생이 컨트리뷰션 기간동안 제출한 패치는 아래 링크에서 확인할 수 있다.

K2Web Wizard - 신지홍, 윤승희 학생, [2021 오픈소스 컨트리뷰션 아카데미] 대상(과학기술정보통신부장관상) 수상
오픈소스 컨트리뷰션 아카데미를 통해 Exporterhub.io 오픈소스 기여해볼 수 있는 기회를 가져봤다.
해당 오픈소스 이슈68번 Front의 각 Exporter들의 어떤 Contents가 저장되어있는지 확인하기 위해 Backend에서 각 Exporter 들의 Contents List data를 만들어 Front에게 보내는 작업을 해보기로했다.
처음에 개발하기 위해 개발환경세팅을 해야했는데, 해당 프로젝트는 총 4개의 컨테이너가 동시에 띄워져 앱을 실행시키는 오픈소스였다. 그때 당시 나는 Docker 에 대해 단일 컨테이너를 띄우는 것만해보아서 어떻게 다중 컨테이너를 띄우는 상태에서 개발환경 세팅을 어떻게 해야될지 몰랐다 ㅜ..
부랴부랴 공부해서 삽질하기를 2주째.. 겨우겨우 로컬과 마운트해서 개발환경세팅해서 실행시켜보았는데, 그저 해당 오픈소스의 Install Guide를 잘 보고 따라하고, docker-compose.yml 파일내에서 개발할 컨테이너를 로컬과 마운트시켜 docker-compose up으로 실행시키면 되었다.
Exporter Contents List Data
메트릭을 추출해주는 각 Exporter 들은
•
Hands on (Default)
•
IaC
•
Alerting rule
•
Grafana dashboard
의 Content가 있는데 Hands on 해당 Exporter 의 기본정보로 Exporter 등록할때 DB에 저장되게 된다. 이외의 컨텐츠들은 Github repo를 DB처럼 이용하여 저장하여 이 데이터가 있는지 확인하기 위해서 GithubAPI를 이용하여 매번 요청과 응답의 과정을 거친다.
그래서 나는 Github API를 통해 메인페이지를 로딩할 시 각 Exporter들의 Contents 여부를 확인하기 위해 Github API를 이용하여 데이터를 가공하여 첫번째 Commit을 날려보았다.
오픈소스 기여하기 (오픈소스 컨트리뷰터 - Exporterhub.io)

1주차 첫 스프린트 팀 일정 소화 후기
(지난 글 확인하기 : 오픈소스 컨트리뷰션 1주차 팀 미팅)
오픈소스 컨트리뷰션 1주차 팀 스프린트 데이를 맞이했다.
참여는 온/오프라인 모두 가능하지만, 기본적으로 함께 참여 중인 멘토님과 멘티 동료들을 직접 만나고 싶은 마음에 선릉역에 소재한 Open Up 센터에 오프라인 미팅에 참여했다.
코로나 확진자가 2000명 가까이 나오는 시국이라 멘티들이 많이 나오지는 않았지만, 온라인 스프린트 데이에 참여해서 이번주에 오픈스택 환경 설정을 끝마치게 된 것 같다.
나와 멘토님, 그리고 1명의 멘티님이 함께 오프라인으로 참여했다.
오늘은 오픈 업 사무국에서 깃 교육이 다시 있는 날이라 깃 온라인 교육을 진행 했고, 우리는 다른 방에서 열심히 오픈 스택 셋업을 했다.
사실 지난 번 글을 통해서 설치가 잘된 줄 알았는데, 전혀 아니었다.
설치가 잘 된 것과는 별개로 클라우드 상에 설치한 것이기 때문에 추가 환경 설정이 필요했는데, 그 작업을 멘토님께 들을 수 있어서 스프린트 데이 내내 설치를 다시 진행하는 일을 작업하게 되었다.
2021.08.14 토요일 작업 일정
1. 공동사항 : 클라우드 작업환경 설정
먼저, 사람들마다 사용하는 컴퓨터 환경이 전부 다르고, 작업하는 환경 통일을 위해 우리는 카페 24에서 제공하는 가상머신을 사용하게 되었다는 것을 지난 글에서도 언급했었다.
그런데 이렇게 가상 머신을 사용하게 되는 경우, 즉 클라우드 환경에 배포하는 경우 네트워크 상에 작업해야할 것들이 몇 가지 존재한다.
아마 내 글을 읽는 사람들은 대부분 본인이 오픈 스택을 설치해야하는 상황일 것이고, virtualbox로 설치하는 것이 아니라 클라우드 상에 배포해야하는 상황에 어떤 추가적인 작업이 필요한지를 고민하고 읽을 것이라 생각한다.
오픈소스 컨트리뷰션 1주차 스프린트 : 오픈스택 환경 구성하기 | by Ryan Kim | Medium
OpenStack CLI 사용 방법 안내 및 2차 과제 시작
PyCharm을 이용한 본격 오픈스택 다루기 기초 시작!
들어가기 전에…
오늘 프로젝트는 반드시 devstack을 사용해 오픈스택 환경 구축하기가 되어 있어야 진행할 수 있습니다.
꼭 환경설정을 마치고 와서 글을 읽어주시기 바랍니다.
1. OpenStack Cli 프로젝트 개발 환경 만들기
오픈소스 컨트리뷰션 마스터 챌린지 2주차가 시작되었다.
지난 1주차 때를 잘 생각해보면 환경 설정하는 것에 네트워크와 관련한 지식이 워낙 많이 포함되기 때문에 시간을 정말 필요 이상으로 많이 사용했는데, 이번 주도 그랬다.
이번주의 경우, 스프린트 데이 때 모일 수가 없어서 좀 더 개인적으로 삽질하는 시간이 길었던 것 같다.
2주차의 팀 업무의 경우, 이제 오픈스택 환경 구축이 완료되었으니 본격적으로 OpenStack CLI를 사용해서 오픈스택을 이용해보는 시간을 가지게 된다.
OpenStack CLI를 사용하기 위해서는 의존성 레포가 2개 존재한다.
따라서 이 3개의 레포를 모두 clone해서 사용해야하며, 3개의 레포를 클론하면 Pycharm을 사용해서 가상환경을 구축 후에 각 파일 내부에 있는 setup.py를 develop 모드로 설치해 사용해야한다.
다 설치하면 아래와 같이 3개의 clone되어 있는 레포를 볼 수 있다
(하나의 프로젝트에서 3개의 레포를 관리해야한다)
환경 구축하기
오픈소스 컨트리뷰션 2주차 : OpenStack CLI 와 친해지기 | by Ryan Kim | Medium

오픈소스?
오픈소스 프로젝트
PyTorch-tutorial-krPyTorch-hub-kr
파이토치를 처음 공부할 파이토치 한국어 튜토리얼 사이트가 많은 도움이 되었다. 파이토치 공식 문서는 구글과,,,다르게 한국어 지원이 없어서 불편했다. 그렇기 때문에 파이토치 한국어 튜토리얼은 한줄기 빛과 같은 존재였다. 하지만 번역이 진행되지 않은 페이지, 사소한 불편한 점을 나도 함께 개선해 보고 싶었다.
활동 내용
•
번역 리뷰
•
파이토치 튜토리얼 번역
•
파이토치 허브 문서 번역
•
번역 규칙 추가
회고
다들 번역 잘하셔서 PR을 리뷰하기 위해서는 여러번 봐야지 작은 부분이라도 찾을 수 있었다. 리뷰하면서도 혹시 틀린 내용이 있을까 더 찾아보고 코멘트를 남겼던것 같다. 번역만 생각했는데 오픈소스 프로젝트를 어떻게 더 잘 운영할 수 있는지, CI/CD, 번역 편의와 일관성, 사용자들에게 정보를 더 쉽게 표현할 수 있을지 등등... 많은 부분 생각해보는 시간이었다. 참여해보고 싶었던 오픈소스 프로젝트에 참여하는 기본 방법(컨트리뷰션 가이드, 번역규칙 등)부터 차근차근 멘토님이 알려주시고 멘티들과 함께 할 수 있어서 많이 배우고 재밌게 참여할 수 있었다.
하지만 무엇보다도 내가 작업한 내용이 많은 사람들이 사용하는 오픈소스에 반영된다는 점이 정말 신기하고 신난다..!

이후
컨트리뷰션 아카데미 기간이 끝나도 해당 프로젝트에서 계속 활동할 예정이다. 이번 기회는 오픈소스 활동을 체험하는 친절한 소개시간이었다고 생각된다. 앞으로도 사용해본 서비스에 대한 오픈소스에 직접 참여할 수 있도록 일상에 최선을 다해야겠다.
오픈소스 컨트리뷰톤

아직 메인 프로젝트 참여 멘티 선발 결과는 안나왔지만, 이번 주에도 4주차 스프린트를 참여했고, 온라인으로 참여를 진행하게 되었다.
이번주는 오픈스택에서의 VCS (Version Control System)을 다루는 방법에 대해 익히게 되었고, git을 사용하지만 게릿이라는 구글에서 배포한 코드 리뷰 소프트웨어를 사용하는 방법으로 코드 리뷰 등을 관리한다.
참고로 오늘 글은 OpenStack과 관련한 어떤 컴포넌트 중 하나라도 사용해 본 경험이 있고 현재 당신이 작업하고 있는 노트북에 설치되어 있어야 실습해 볼 수 있다.
이 글에서 OpenStack CLI 사용하는 방법에 대해 링크를 걸어놓으니 참고하면 좋을 것 같다.
주로 작업한 것들을 정리하자면
1.
Gerrit 계정 설정 및 SSH 키 생성
2.
Gerrit & Storyboard사용방법 안내
3.
git review를 이용한 커밋 메세지 작성 방법 및 푸시 방법 안내
4.
Gerrit을 사용한 코드 리뷰 남기기 및 수정 코드 커밋
5.
Gerrit에서 코드가 Merge되는 방법
등에 대해 알아보게 될 것이다.
우선, Gerrit 사용 방법 자체는 매우 간단하고 어렵지 않다.
다만, 기존에 Git을 사용하던 방식과는 약간 차이가 있고, 코드 리뷰를 남기는 방법도 차이가 있어서 미리 기록해두지 않으면 동일한 실수를 여러번 할 것 같다는 생각에 이렇게 정리를 진행하게 된다.
1. Gerrit 계정 설정 및 SSH 키 생성하기
오픈소스 컨트리뷰톤 4주차 팀 스프린트 참여 후기 : 본격적인 커미터가 되기 위한 준비하기 | by Ryan Kim | Medium
오픈소스?
오픈소스 프로젝트
PyTorch-tutorial-krPyTorch-hub-kr
파이토치를 처음 공부할 파이토치 한국어 튜토리얼 사이트가 많은 도움이 되었다. 파이토치 공식 문서는 구글과,,,다르게 한국어 지원이 없어서 불편했다. 그렇기 때문에 파이토치 한국어 튜토리얼은 한줄기 빛과 같은 존재였다. 하지만 번역이 진행되지 않은 페이지, 사소한 불편한 점을 나도 함께 개선해 보고 싶었다.
활동 내용
•
번역 리뷰
•
파이토치 튜토리얼 번역
•
파이토치 허브 문서 번역
•
번역 규칙 추가
회고
다들 번역 잘하셔서 PR을 리뷰하기 위해서는 여러번 봐야지 작은 부분이라도 찾을 수 있었다. 리뷰하면서도 혹시 틀린 내용이 있을까 더 찾아보고 코멘트를 남겼던것 같다. 번역만 생각했는데 오픈소스 프로젝트를 어떻게 더 잘 운영할 수 있는지, CI/CD, 번역 편의와 일관성, 사용자들에게 정보를 더 쉽게 표현할 수 있을지 등등… 많은 부분 생각해보는 시간이었다. 참여해보고 싶었던 오픈소스 프로젝트에 참여하는 기본 방법(컨트리뷰션 가이드, 번역규칙 등)부터 차근차근 멘토님이 알려주시고 멘티들과 함께 할 수 있어서 많이 배우고 재밌게 참여할 수 있었다.
하지만 무엇보다도 내가 작업한 내용이 많은 사람들이 사용하는 오픈소스에 반영된다는 점이 정말 신기하고 신난다..!
이후
컨트리뷰션 아카데미 기간이 끝나도 해당 프로젝트에서 계속 활동할 예정이다. 이번 기회는 오픈소스 활동을 체험하는 친절한 소개시간이었다고 생각된다. 앞으로도 사용해본 서비스에 대한 오픈소스에 직접 참여할 수 있도록 일상에 최선을 다해야겠다.
오픈소스 컨트리뷰톤 – Bemore

이번 2020 오픈소스 컨트리뷰톤에서 멘티로 참가하여 ESLint에서 프로젝트를 진행하며 merge까지 하게 됐습니다!!!
그래서 진행하면서 어려웠던 점, 배웠던 점을 후기로 남기려고 합니다.
1. 주제 선정하기
평소 React에 관심이 많아 eslint-plugin-react에서 이슈를 찾던 중, JSX에서 tab과 space의 간격을 동일하게 인식하는 문제를 해결하기로 결정했습니다.
그리고 혹시 다른 분들이 PR을 먼저 보낼까봐, 해결하겠다는 코멘트를 재빠르게 보내고 프로젝트를 시작했습니다.
2. 해결 과정
1) 어떻게 해결하지?
•
•
•
•
•
hasCorrection(tokens, expectedLocation)에 usingSameIndentation 변수를 추가하여 tag-aligned 조건에서 같은 indentation을 사용했을 때만 return 할 수 있도록 추가했습니다.
2) 디버깅은 어떻게 하지?
오픈소스 컨트리뷰톤) 첫 merge 도전하기!!!
이틀간 진행되었던 2021 오픈소스 컨트리뷰션 지역 스프린트에 Azure 클라우드 오픈소스 SDK 팀으로 참여했습니다.
이번 스프린트에서는 총 5개의 프로젝트가 있었는데, 제가 이 중 Azure SDK 팀에 참가한 이유는 “클라우드 개발자”로 성장하고 싶은 목표가 있기 때문입니다. 또한 Azure SDK 오픈소스에 실제로 기여해보면서 Azure 환경을 제대로 경험해보고 싶다는 생각도 있었습니다.
신기한 협업 환경 구축하기
코로나로 인해 지금까지 진행한 프로젝트는 모두 비대면으로 했었기 때문에, 이렇게 직접 만나 모여서 개발을 진행하게 된 것은 정말 처음이었습니다. 대면이지만 각자 노트북이 있음을 100%로 활용할 수 있는 협업 환경을 먼저 구축하고 본격적인 시작을 했었습니다. 이때 사용한 프로그램은 총 2개로, Microsoft Teams와 Opendev Etherpad를 사용했습니다.
Teams로는 각자의 노트북 화면 공유를, Etherpad로는 진행 사항에 변화가 있을 때마다 세부 내용을 정리했었습니다. Teams는 다른 행사 등에서도 활용되었기 때문에 익숙했었는데, Etherpad는 정말 재미있는 툴이었습니다. 구글 문서처럼 여러 사람과도 동시에 한 문서를 수정할 수 있고 누가 적었는지도 색으로 직관적으로 확인이 가능했습니다. 무엇보다 구글 문서보다 동기화가 조금 더 빠른 것처럼 느껴져서 정말 같이 큰 보드를 두고 공유하는 느낌이 들었습니다.
이 두 가지 프로그램을 활용해 대면의 장점과 비대면의 장점을 합친 협업을 할 수 있었던 거 같습니다. 다음에 대면으로 모여서 코딩을 하게 된다면 이렇게 구축하고 시작하면 좋겠다는 생각이 들었습니다.
Git 명령어와 더 친해지기
평소에도 Github을 잘 쓰고 있어서 커밋을 할 때 문제가 없을 줄 알았는데, 의외로 Git 명령어와 아직 덜 친해졌다는 걸 깨달을 수 있었습니다.
잘못된 PR을 날렸는데 이때는 어떻게 해결해야 하는지, 불필요한 정보가 포함된 커밋은 어떻게 삭제하는지, 커밋 메세지는 어떤 식으로 작성하면 가장 좋은지, 실제로 맞닥뜨릴 법한 상황에서 멘토님과 함께 Git 명령어를 실행해보면서 어떻게 해결하면 가장 좋을지를 고민해보았습니다. (이때 history가 복습에 도움이 되었습니다.) 이런 과정에서 이슈 탭과 브랜치 활용에도 더 익숙해질 수 있었던 의미있는 시간이었습니다. *이번 프로젝트에서 Git 명령어와 씨름하며 기여했던 레파지토리는 이렇게 두 개였습니다.
특히 두 번째 레파지토리를 작업할 때에 모든 팀원이 Azure를 이용해서 같은 환경을 먼저 빌드하고 진행했었습니다. 이때 VSC와 SSH 접속 확장팩으로 클라우드 서버를 사용하지만 마치 로컬에서 진행하는 것처럼 굉장히 편하게 개발을 할 수 있었습니다.
오픈소스에 기여한다는 것
Qiskit 커뮤니티에 있으면서도 느꼈던 점이지만 오픈소스 레파지토리에는 정말 다양한 이슈들이 존재합니다. 그런 이슈를 확인해보면서 관심있는 기술에 더 공부할 수 있는 계기가 되기도 하고, 또 더 나아가서 해당 기술에 직접 내 코드를 기여할 수도 있을 것입니다.
저도 Qiskit이라는 오픈소스에 관심을 가지게 되면서, 해커톤에 참여해서 상도 받아보고 다양한 곳에서 제 경험을 나눌 수도 있었습니다. 오픈소스에 “기여”한다는 게 너무 무거운 주제같다면 오픈소스랑 먼저 각자의 방식으로 친해져보는 건 어떨까요? 실제로 실행해보는 편이 좋다면 토이 프로젝트를, 어떤 오픈소스인지 먼저 문서로 파악하고 싶다면 공식 Docs 번역에 기여하는 등의 방법도 있습니다. 생각보다 다양한 방법으로 오픈소스랑 친해질 수 있으니 각자에게 맞는 방법으로 시작해보면 좋을 거 같습니다. 아직 저도 많은 기여를 해보지는 못했지만, 오픈소스가 없었더라면 얻지 못했을 기회들을 많이 만날 수 있었습니다. 이번 스프린트를 통해서도 새롭게 배울 수 있었던 게 많았듯이 말이죠.
끝으로, 이틀간 프로젝트를 잘 리딩해주신 최영락 멘토님과 박경훈 멘토님, 그리고 프로젝트에 쭉 집중할 수 있게 계속 서포트 해주셨던 운영진 분들께 이 글을 통해 감사 인사를 남깁니다.

오픈소스에 기여해보는 경험이 필요한 이유 - TULA Log