Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

GitHub Universe 2019 참석기

지난 11월 13~14일 샌프란시스코에서 열린 GitHub Universe 2019에 참석을 하고 왔다. GitHub Universe는 GitHub에서 주최하는 기술 콘퍼런스로 2015년부터 열렸고 어쩌다 보니 작년에도 참가해서 올해로 3번째 참석이다. GitHub Universe가 메인 행사고 위성 행사로 GitHub Satellite를 다른 도시에서 연중에 개최하고 있다.

GitHub Universe 입구

장소는 작년과 같은 Palace of Fine Arts에서 열려서 편안하게 갔다 올 수 있었다. 작년에도 갔다 와서 원래 올해도 Universe에 참가할 생각은 없었으나 운 좋게 티켓 할인 쿠폰도 받았고 계획하고 있던 미국 방문 일정과 시기도 겹쳐서 겸사겸사 참여하고 왔다.

첫째 날 Keynote

이번 키노트는 현 GitHub의 CEO인 Nat Friedman이 진행했다. 작년 GitHub Universe는 Microsoft에 인수되기 전이었기 때문에(발표는 났지만 인수되기 전) Microsoft에 인수된 후 첫 콘퍼런스고 Nat Friedman의 키노트도 처음이다.(그동안 다른 행사에서는 여러 번 등장했지만...) 많은 사람이 걱정했던 것과 달리 1년이 지난 시점에서도 GitHub에서 Microsoft의 기운은 거의 느껴지지 않고 콘퍼런스에서도 별도로 운영되는 느낌이 강했다.

키노트의 Nat Friedman

이번 키노트에서는 GitHub ActionsGitHub Packages의 베타가 풀리고 아무나 사용할 수 있게 되었다. GitHub Actions는 작년 GitHub Universe에서 발표되었는데 HCL로 운영되다가 중간에 YAML로 바뀌고 CI 외에 CD 기능까지 추가되었다. GitHub Packages는 npm, Docker, Maven, RubyGems 등 패키지 레지스트리 기능인데 둘 다 기능은 다 공개되어있었고 이번에 베타를 떼고 누구나 이용할 수 있게 된 거라 큰 감흥은 없었다. 이번에 열린다는 것이 예고되기도 했고...

키노트에서 GitHub for Mobiles 발표

가장 인상적인 발표는 드디어 GitHub에서 직접 모바일 앱을 만들었다는 것이다. 그동안 서드 파티 앱은 많이 있었지만, 항상 기능이 불만이었는데 공식 앱이 내년에 출시될 예정이다. 발표하면서 바로 베타 신청을 받았는데 iOS는 Testflight로 베타를 사용할 수 있게 되었고 Android 앱은 아직은 써볼 방법은 없고 베타게 대기 리스트에 신청을 해두어야 한다. iOS 베타 신청하자마자 바로 초대 메일이 와서 모두에게 열어주나 했는데 나중에 신청한 사람은 아직 못 받았다고 하니 선착순으로 열어 준 것으로 보인다. 나중에 기회가 되면 앱 소개도 하겠지만 앱 퀄리티가 상당히 좋고 GitHub의 기능 대부분이 들어가 있다. 어떤 스택으로 만들었나 궁금해서 물어보니 GitHub 앱은 네이티브로 개발했다고 한다.

그 외에 노티피케이션 메뉴가 개선되어 알림이 구독 때문인지 멘션 때문인지 바로 볼 수 있고 알림 메뉴 안에서 바로 Pull Reqeust나 이슈의 내용도 열어볼 수 있다. 나는 사용할 수 있게 열려서 써보고 있는데 아직은 더 편한 듯도 하고 아닌 듯도 하고 그렇다. 코드 네비게이션도 개선되어 GitHub 사이트 내에서 코드의 정의 부분이나 참조하는 부분으로 바로 이동할 수 있게 되었고 코드 검색 등이 강화되었다.

아직 베타지만 예전에는 리뷰해야 할 Pull Reqeust 등을 확인하려고 Lambda 등으로 Slack에서 알림을 받곤 했는데 Scheduled Reminders라는 이름으로 추가되어 퍼블릭으로 열리기를 기대하고 있다.

GitHub Archive Program

아주 흥미로운 프로젝트는 GitHub Archive Program였다. 뭔가 대단한 것 같기도 하면서 어떤 의미가 있나 싶기도 했는데 요약하면 2020년 2월 2일 기준으로 GitHub의 모든 공개 저장소의 스냅샷을 저장해서 후세를 위해 보관하겠다는 프로그램이다. 북극 땅 밑 250m 아래 GitHub Arctic Code Vault 데이터 저장소에 보관하며 1,000년을 보관할 수 있는 콜드 스토리지에 저장될 예정이다. 개인적으로 이런 프로젝트는 어떻게 기획되어서 승인되는지도 궁금한 부분인데 세션 중 Archive Program에 대한 발표를 보면 업계의 유명한 학자 등이 나와서 1,000년을 위한 스토리지에 어떤 기술이 쓰였는지 공유하는 자리가 있었고 무슨 말인지 잘 이해할 수 없었지만, 저것만으로도 많은 사람의 협업이 필요하고 도전적인 접근이라는 느낌을 받았다.

첫째 날 세션

GitHub Universe에서 내가 원래 기대하는 세션 수준은 GitHub 엔지니어링 블로그같은 내용이지만 그동안 참여 경험으로 보면 GitHub Universe의 세션은 내용이 훨씬 보편적인 내용이다. GitHub을 열심히 쓰고 있다면 너무 쉬운 내용의 세션이 많이 있고 키노트 내용을 미리 공개하지 않기 때문인지 세션 제목은 추상적이지만 막상 들어가면 키노트에서 발표했던 내용의 상세 내용을 다루는(이라고 쓰지만, 실제론 그냥 기능 소개 정도인) 세션이 상당수 있다. 그래서 사실 GitHub에서 직접 발표하는 세션은 조심스럽게 고르는 편인데 그러다 낚여서 "How highly productive teams communicate using GitHub"이라는 발표에 들어갔더니 GitHub for mobile의 기능을 보여주는 세션이었다. 그래도 Octoverse의 내용을 얘기하는 패널 토의는 오픈소스의 다양한 흐름을 볼 수 있어서 좋아한다.

Guillermo의 발표

제일 좋았던 세션은 Zeit의 CEO인 Guillermo RauchBuilding and deploying modern websites and apps이었다. Guillermo는 Socket.io 때부터 너무 좋아하던 개발자기도 하고 스토킹하듯이 그동안의 행보를 추적하면서 보고 있는데 역시나 발표도 좋았다. 지금 Zeit가 만드는 프로덕트들의 흐름을 이해할 수 있도록 서버리스를 중심으로 프론트엔드 개발이 어떻게 달라지고 있는지 흐름을 설명하면서 자신이 생각하는 인사이트와 그에 따라 만든 Zeit의 제품들을 소개하는 세션이었는데 프론트엔드를 좋아하는 나로서는 아주 재미있게 들었다.

예전에 몇 번 인사한 적이 있어서 발표 끝나고 인사를 할까 하다가 질문자들이 많아서 그냥 나왔다. Guillermo는 Socket.io를 만들던 LearnBoost 시절부터 원래 넘사벽이기는 했지만 그래도 전에는 트위터나 메일로 얘기도 나누고 했었는데 그때부터 수년이 지났지만 난 아직도 Guillermo랑 영어로 하고 싶은 얘기도 제대로 못 한다는 생각이 들면서 그동안 뭐 했나 싶어서 자괴감이 들기도 했다.

행사장

GitHub Universe 행사장

Palace of Fine Arts는 꽤 넓은 장소라서 쾌적하게 둘러볼 수 있었고 작년과는 좀 다른 분위기로 꾸며져 있었다. 전체적인 규모는 작년보다 작아진 느낌이었다. 작년에는 2층까지도 부스로 꽉 차 있었지만 이번에는 2층에는 전혀 부스가 없어서 참가자 수는 정확히 모르지만, 행사 규모는 좀 작아졌다는 느낌이 들었다. 그리고 행사에서도 작년까지는 Shop의 제품도 할인해 주고 많이 사면 사은품까지 주면서 퍼주는 느낌이 있었다면 올해는 Shop도 정가를 다 봤고 별다른 사은품도 없는 느낌이었다. 음식 퀄리티도 작년에 비해서는 약해진 느낌이었다.

왜 그럴까 생각했는데 아무래도 작년까지는 GitHub을 다양한 회사가 스폰서로 들어와서 운영했다면 이번에는 Microsoft가 있어서 스폰서 수도 적어진 것 같은 느낌인데 그 탓이지 않을까 싶다. Microsoft가 예산 책정을 어떻게 하는지는 잘 모르지만...

GitHub Universe 2층의 myOctocat 부스

재밌는 이벤트로는 작년부터 등장한 myOctocat을 2층에 마련해 두고 커스텀한 Octocat을 프린트 요청하면 30분 뒤에 제작된 스티커를 받을 수 있게 한 것이다. 줄 서서 기다리다가 스티커를 만들면 되는데 꽤 다양하게 커스텀 할 수 있어서 그냥 만들고 메일로만 받았던 작년에 비하면 스티커로 주니까 훨씬 좋았다.

myOctocat에서 커스텀 출력한 스티커

이렇게 직접 만든 옥토캣을 스티커로 만들 수 있다. 한 번에 2장만 찍어준다.

GitHub Shop

입구 옆에는 오프라인 GitHub Shop이 있었다. 이번 Universe에서 처음 나온 Talking Monas도 있었고 평소랑 달리 GitHub Universe용 후드와 티셔츠도 팔고 있었다. 그리고 이번 할로윈 기념으로 나온 티셔츠도 팔아서 잽싸게 사 왔다. Talking Monas는 내 취향은 아니라서 빼고...

엔터프라이즈 리셉션

올해부터는 GitHub Korea가 생겼기 때문에 지난 10월에 열린 GitHub과 기업내 오픈소스 문화에서의 인연으로 GitHub Korea 분들과 총판인 단군소프트의 배려로 엔터프라이즈 리셉션에 참여할 수 있었고 엔터프라이즈 고객만 초대하는 이 리셉션은 GitHub 본사에서 열렸다.

GitHub HQ

GitHub 본사는 5년 전에 방문에서 구경한 적이 있었는데 그 사이에는 밋업 등으로 1층만 방문하다가 오랜만에 사무실까지 들어가 봤다. 참석자를 대상으로 투어를 시켜줬는데 이번에는 내부 사진은 찍지 못하게 했다. 1층이 거의 달라지지 않아서 몰랐는데 올라가 보니 구조가 좀 달라져 있었다.

전에 사무 공간이 2층과 3층이 있었다면 2층은 거의 달라지지 않았다. 올라가자마자 GitHub Shop이 있는 것도 똑같았고 방문자 선물이라고 해서 스티커랑 티셔츠도 하나 받아왔다. 전에 있던 3층의 사무 공간은 사라졌고 옆 건물을 사서 확장했다고 하면서 2층 사무공간을 지나면 2.5층 같은 느낌으로 계단을 올라가서 옆 건물로 갈 수 있었고 거기에도 많은 회의 공간과 업무 공간이 있었다. 기존 건물과는 인테리어 분위기를 완전히 다르게 되어 있어서 깔끔한 사무실이었고 기존 사무실과 의도적으로 대비되는 인테리어를 의도했다고 한다. 휴게실 이름이 "REST API"인 것과 해먹에 사람이 앉으면 자동으로 외부에 사람이 쓰고 있다는 표시로 바뀌는 점이 재미있었다.

엔터프라이즈 리셈셥의 주류 메뉴

리셉션이라서 술도 주는데 술의 이름을 "Yaml lead you throught Actions!", "GHES 2.19", "GitHub Security Lab" 등으로 신제품과 연결한 것도 재미있었다. 대신 시끄러운 가운데 이름이 길어서 주문할 때는 힘들었다. 어쨌든 사무실 구경도 잘하고 맛있는 것도 많이 얻어먹고 왔다.

둘째 날 Keynote

키노트에서의 Security Lab 발표

둘째 날 키노트에서는 Security Lab이 가장 큰 발표였다. 관련해서 강화된 취약점 보고 및 알림 등의 기능들 설명하고 CVE를 직접 보고하고 수정할 수 있도록 오픈소스 프로젝트의 보안을 높이기 위해 큰 노력을 하는 것이 보였다. 그리고 지난 9월 GitHub이 인수한 LGTMCodeQL을 이용하면 코드에 쿼리를 날려서 취약점을 찾거나 하는데 이용할 수 있다. 쉽게 생각하면 Lint나 정적 분석 도구처럼 코드에서 위험한 부분을 찾아내는 쿼리 도구라고 생각하면 될 것 같고 CodeQL은 오픈소스와 연구, 교육 목적으로는 무료로 사용할 수 있다고 한다.

안타깝게도 둘째 날은 키노트를 듣고 나오자마자 회사 서비스에 이슈가 생겨서 해당 문제를 디버깅하느라고 다른 세션은 하나도 듣지 못하고 종일 작업을 했다. 머리를 너무 썼는데 문제가 안 풀려서 끝나고 나올 때는 머리가 너무 아팠다. ㅠ

그래도 행사 내내 GitHub Korea와 단군소프트 분들이 너무 신경을 많이 써주셔서 맛있는 것도 많이 먹고 편하게 있다가 돌아왔다. 궁금한 것들을 물어보고 얘기하기도 편했고...

샌프란시스코에서의 시간

이번에 샌프란시스코를 갈 때는 휴가와 원격을 섞어서 갔기 때문에 콘퍼런스가 아닌 날은 원격근무를 했다. 원래 샌프란시스코를 가면 작업하던 코워킹카페가 있는데 아침에 일어가서 카페에 가니 문을 닫은 것을 알게 되었다. 장사가 잘 안 되어서 인지 폐업을 한 것 같았다. 카페에 가면 맥북 놔두고 화장실 가기도 쉽지 않고 작업할 때 신경 쓰일 일도 많고 해서 급하게 검색을 하다 보니 Covo라는 코워킹 스페이스를 찾을 수 있었다.

코워킹 스페이스 Covo

Covo가 위치도 가까웠지만 다른 코워킹스페이스와 달리 시간 단위로 결재해서 이용할 수 있어서 좋았다. 들어가면서 카드를 긁고 들어가고 나올 때 긁으면 알아서 시간이 계산되고 시간당 $4이다. 가격이 아주 싸진 않지만, 인터넷도 빠르고 공간이 좋아서 맘 편하게 이용할 수 있어서 원격할 때는 계속 여기에 있었다. 음료는 무료는 아니지만, 옆에 카페가 있어서 식사나 커피를 바로 사서 먹을 수 있었다. 담에 또 샌프란시스코에 갔을 때 없어지지 않기를 바라고 있다.

Uber HQ 사무실

마지막 날에는 올봄 Facebook F8 해커톤에서 만난 인연으로 샌프란시스코 다운타운에 있는 Uber 본사를 방문할 수 있었다. 한 건물에 Uber뿐 아니라 Uber Eats, Jump의 사무실이 다 있어서 한 바퀴 둘러보고 맥주 얻어먹으면서 샌프란시스코 동향도 듣고 왔다. 오피스 투어를 좋아하는데 최근엔 계속 혼자만 다니느라 잘 못 가다가 오랜만에 구경하러 가서 한국어로 얘기할 수 있으니까 너무 좋았다. 올해 들은 얘기가 있어서 내년에 또 놀러 가서 다른 얘기도 들어봐야겠다.

여유 있는 날은 밋업도 계속 찾아서 다녔는데 WASM에 대한 밋업인 We don't need no servers or compilers는 그냥 괜찮은 정도였다. WebAssembly는 항상 관심은 가지만 아직 현실에서 딱 어떻게 쓰겠다 하는 게 없어서 계속 관심 정도만 가지게 되는 것 같다. Uber 엔지니어링 그룹에서 운영하는 Building Infinite Lists, a Doc Site that Writes Itself and The Road to Parcel 2는 아주 재미있었는데 다른 Uber 사무실에서 열렸는데 3가지 발표가 모두 재미있었다.

Twitter에서 나와서는 트위터 타임라인의 무한 스크롤을 왜 직접 구현했고 구현하면서 어떤 문제가 있었는지를 소개했고 Uber에서는 컴포넌트 디자인 시스템이 보통 너무 많은 요소와 조건들 때문에 사용자들이 제대로 사용법을 파악하기가 어렵기 때문에 더 좋은 문서를 만들기 위해 Uber의 디자인 시스템인 Base에서 적용한 방법을 설명했다. 컴포넌트의 모든 Prop과 기능을 문서로 나열하기보다는 직접 조합하고 코드를 수정해서 원하는 버튼을 테스트해 보고 복사해서 사용할 수 있도록 만들었는데 고민이 많이 녹아있는 거로 보였고 지금 Base 웹사이트에 적용되어 있다. 마지막으로 Parcel을 만든 Adobe의 Devon Govett이 직접 나와서 현재 만들고 있는 Parcel 2를 왜 만들게 되었고 어떤 기능이 있는지 설명해 주었는데 온라인에서 보던 Devon을 직접 보고 프로젝트 설명을 들을 수 있어서 좋았다. 샌프란시스코 밋업은 이렇게 프로젝트 창시자의 발표를 직접 들을 수 있다는 점이 큰 매력인 것 같다.


컨퍼런스 참석 후기는 stdout.fm의 GitHub Universe 2019, Kubecon 2019 참석기 w/ outsider, anarcher, subicura 팟캐스트에서도 들을 수 있습니다.

2019/12/10 03:22 2019/12/10 03:22

컨트리뷰톤 2019 참가 후기

지난여름에 컨트리뷰톤에 참가해보지 않겠냐는 연락을 받았다. 공개SW 개발자센터의 오픈프론티어에 작년부터 참가하고 있기 때문에 컨트리뷰톤에 대해서 들어본 적은 있었지만 사실 자세히 알지는 못했다.

공개SW컨트리뷰톤 공고

컨트리뷰톤을 간단히 설명하면 컨트리뷰팅 + 해커톤이 합쳐진 말로 일정 기간 오픈소스 기여를 돕는 행사로 참가 프로젝트를 선정해서 해당 프로젝트의 기여를 도와줄 멘토들이 있고 이 프로젝트들을 기준으로 참가자를 모집해서 기여할 수 있게 지원하는 행사다.

작년부터 Mocha에 기여하고 있어서 참가 요청을 받은 것인데 해보던 행사도 아니고 행사 기간이 길어서 처음에는 회의적이었다. 그러다가 이미 컨트리뷰톤에 여러 번 참가하신 정윤원 님이 꼬셔서 참가하게 되었다.

컨트리뷰톤 참가자 선정

컨트리뷰톤은 2016년부터 진행된 행사로 올해는 Backend.AI, pandas, Armeria, 구름입력기등 총 20개의 프로젝트가 선정되었다. 온라인 및 각 대학교 등에서 홍보가 되는 것 같은데 정부 사업이라서 그런지 보통 개발 커뮤니티에서는 연결되기 어려운 대학교에 공고가 나가고 이를 통해 학생들도 정보를 많이 접하는 것 같았다.

처음에 작성했던 프로젝트 소개와 진행방식에 대한 소개자료를 보고 참가자들이 프로젝트를 골라서 선정하고 그중에서 참가자를 고르면 된다. 보통 10명 안팎 정도를 얘기하던데 mocha 프로젝트에는 12명을 선정하려고 생각했다가 신청자가 56명인가 되어서 그중에서 고르고 고르다가 다 못 고르고 14명은 선정했다. 나한테 왜 떨어졌는지 물으신 분도 계셨는데 경력이나 자기소개 등이 있는데 사실 변별력이 별로 없어서 선정하기가 어려웠다. 물론 이력서 약식의 긴 문서가 있었어도 다 보기는 힘들었을 거다. 처음 참가하는 행사라 감이 없어서 어떻게 해야 할지 모른 채로 신청자가 적은 내용을 다 읽어보았다.

컨트리뷰톤의 목표를 생각해봤을 때 오픈소스에 기여해 볼 기회가 없었던 사람들에게 오픈소스를 알려주고 오픈소스에 기여해 보면서 장기적으로 컨트리뷰터가 되게 만드는 것이라고 생각했다.

그래서 오픈소스에 관심은 있으나 어디서부터 시작할지를 모르고 주변에서 도움을 받기 어려운 사람들을 위주로 뽑았는데 신청 서류에 분별력이 높지는 않았기 때문에 꽤 많은 부분은 그냥 직관이긴 하다. 그리고 성비를 반반을 맞추었다. 이런 부분은 이쪽 업계의 성비가 과도하게 한쪽으로 치우쳐져 있다고 생각하기에 의도적으로 한 것이고 이런 생각도 역차별일까 걱정을 좀 했지만, 주변에 조언을 구했을 때 괜찮을 거라고 판단해서 그대로 진행했다.

처음 프로젝트 진행 계획서를 올릴 때 온라인 위주로만 진행하겠다고 계획서를 올렸기 때문에(그 이상 시간을 쓰기 어려울 거로 생각하기도 했고 온라인으로 충분하다고 생각했다.) 지방에서 지원하신 분들도 꽤 계셨고 온라인으로 할 계획이었기 때문에 실제로 그런 분들도 뽑았다.

컨트리뷰톤에서의 초기 목표

올해 JSConf Korea에서도 Mocha로 발표하고 SprintSeoul에도 참가하고 있는데 이런 활동을 계속하는 이유는 내가 Mocha를 계속 하기 위함이다. 올해 전체적으로 슬럼프기도 하지만 계속 내가 Mocha에 참여하도록 만드는 장치들이기도 하다.

Mocha 로고

컨트리뷰톤에 Mocha로 참여했지만, Mocha는 하나의 수단일 뿐이고 오픈소스를 이해하고 재미를 알아가기를 바랬다. Mocha에 기여를 하는 것도 큰일이지만 오픈소스에 Mocha가 있는 것은 아니기에 Mocha에 기여하는 것이 끝이 아니라 오픈소스 생태계를 이해하고 행사 이후에도 다양하게 오픈소스 생태계 내에서 기여를 할 수 있기를 바랐다.

이 목표는 여전히 맞는다고 생각하지만 큰 목표에 비해서 내가 준비가 안 되어 있었고 너무 쉽게 생각했기 때문에 행사가 끝난 시점에서 보면 절반 정도만 성공했다고 생각한다. 최대한 이런 부분을 전달하려고는 했지만 얼마나 전달되었는지는 자기 잘 모르겠다.

위의 목표에 따라 첫 주에는 성당과 시장을 읽게 하고 오픈소스에 대해서 설명하려고 했다. 막상 시작하니 6주가 짧아서 이는 제외하고 진행하기는 했지만, 그냥 책과 설명으로 의도가 전달되었을까 하면 자신은 없다.(주변에서도 너무 거창한 계획이었다고 혼나기도 했다.) 이 부분을 설명하지 못하고 넘어간 게 영 신경 쓰여서 행사 후에는 오픈 소스로 미래를 연마하라라는 책을 선물로 주고 설명을 대체했다.(내가 말하는 것보다 잘 정리된 것 같아서..)

온라인 과정 진행

매주 화요일 10시에 모여서 화상으로 모임을 진행했다. 처음에는 Mocha의 사용법, 프로젝트의 구조, 로컬에서 개발환경, 테스트 실행 방법 등을 설명했고 Mocha의 경우 Pull Request를 올리면 Linting, 유닛테스트, Windows 테스트, CLA, 커버리지 등 다양한 서비스와 연동되어 있었기 때문에 어떤 역할을 하는지 설명하고 질문을 받았다. 처음에는 1시간씩 하려고 했지만 실제로는 거의 2시간씩 했던 것 같다.

첫 주가 지나면서부터 내가 너무 쉽게 생각했다는 느낌이 있었다.

일단 나는 이런 도구들을 써온 지가 오래되었고 이제 시작하는 분들한테 이렇게 설명한 적이 거의 없었기 때문에 사람들이 뭘 어려워하고 뭐가 힘든지를 전혀 모르고 있었던 것 같다. 이전에 오픈소스 발표를 할 때도 사실 Git이나 GitHub를 이해하는 게 진입장벽이라고 생각하기에 오타를 고치거나 하는 것도 처음에는 좋다같은 얘기를 종종 했었는데 실제로 가까이서 보니 진입장벽은 그보다 훨씬 더 높았다.

Open Source Initiative 로고

결국 오픈소스의 프로세스들은 협업을 위한 과정들인데 학생분들이나 아직 협업의 경험이 많지 않은 분들이 이런 프로세스의 필요성을 이해하는 데 많은 어려움이 있었다. 열심히 설명하면 뭔지 정도는 이해하시지만 그 경험은 부족하기에 왜 필요한지까지는 쉽게 전달하기 어려웠고 나도 설명해 본 적이 없어서 난항을 겪었다.

예를 들어 TravisCI가 있어서 질문을 받으면 "그건 CI에요"하면 내 입장에서는 설명이 끝났었는데 거기서 전달이 안 되니까 CI가 무엇인지 왜 필요한지를 설명하면서 계속 긴 이야기로 넘어가게 되다 보니 들으면서 쉽게 이해하기 어려웠을 것 같다.

그리고 요즘 JavaScript쪽이 더 그렇긴 하지만 mocha도 오래된 프로젝트라 협업과 관리를 돕는 많은 장치가 있고 그런 부분을 설명하다 보니 ESlint, husky, Karma, Travis, AppVeyor, Netlify, Coveralls, Istanbul, Prettier, Sauce Labs 등 수많은 서비스와 도구들을 설명해야 해서 참가하신 분들이 용어에서 이미 압도된 느낌이 강했다. 사실 오픈소스를 한다고 저런 서비스나 도구를 꼭 이해해야 하는 건 아니라서 컨트리뷰톤의 의도와 Mocha처럼 오래된 프로젝트는 좀 안 어울리지 않나 하는 생각도 했다.

매주 1회 전체 회의를 하면서 진행 사항 확인 및 전체적으로 설명하면서 진행했다. 14분한테 이슈를 일일이 찾아드리기도 쉽지 않은 일이었지만 자신이 할만한 이슈를 찾고 내용을 파악하는 것도 오픈소스에 기여하는 과정 중 하나라고 생각했기 때문에 이슈도 직접 찾아보게 요청을 했다.

전체 회의외에 이슈에서 막히는 부분은 나랑 따로 화상회의를 잡아서 해당 부분을 설명해주고 같이 방향을 논의하면서 진행할 생각이었지만... 아무도 별도의 화상회의를 요청하지 않았다.

오프라인 스프린트로 변경

사실 이때까지는 내가 컨트리뷰톤에 크게 몰입하고 있지도 못했지만 크게 잘못되었다고 느낀 건 중간보고서를 제출하는 3주 차가 지났을 때였다. 이슈를 찾을 때 Mocha 프로젝트 자체 외에도 생태계 자체를 강조해야 한다고 생각했기에 mocha org 밑의 다른 프로젝트에 해도 상관없다고 하기는 했지만, 이슈를 직접 찾으라고 했더니 대부분이 적합한 이슈를 찾지 못하고(이전 문맥을 몰라서 이슈의 내용을 잘 모르거나 이슈가 할만한지를 판단하기 어렵거나 등) mocha와 관련된 다양한 프로젝트 설정을 모아두는 mocha-examples의 이슈를 처리하겠다고 중간보고서에 올라왔다.

3주가 지났는데 방향을 전혀 못 잡고 있다는 걸 깨달은 순간 "망했다"라는 생각이 들었고 더 적극적인 지원을 해야겠다고 생각을 바꾸었다. 실제로 난 저렇게만 안내를 하면 진행이 될 거라고 생각을 하고 있었다. 지방에 계신 분들한테는 죄송했지만 모일 수 있는 사람들이라도 모여서 더 적극적으로 지원을 하고 나면 원격으로 지원해드리는 분들도 부담을 덜 수 있을 것 같았다.

mocha 오프라인 스프린트

마침 10월 초에는 공휴일이 꽤 있었기 때문에 약속 시간을 따로 잡지 않고 오후 1시부터 7시 정도까지 내가 정한 카페에 계속 있고 참가자분들이 시간이 될 때 잠깐이라도 들려서 같이 이슈를 해결할 수 있도록 했다. 그렇게 행사가 끝날때까지 5번의 스프린트를 했고 정확한 모임 시간을 잡은 것은 아니라서 꽤 많은 분이 참여했다.

그리고 직접 이슈를 찾아보라고 한 부분도 할만한 이슈를 찾아서 어떤 내용이고 어느 부분을 보면 되고 난이도는 어느 정도인지를 정리해서 틈틈이 Slack에 올리기 시작했고 참가자들도 거기서 이슈를 하나씩 가져가기 시작했다.

오프라인 스프린트에서는 5명 정도씩 나오셨는데 이정도 인원이면 나는 다른 일은 거의 못 하고 질문받고 설명해주고 어디가 문제인지 같이 찾아보다 보면 하루가 다 가곤 했다. 저번 PyCon Sprint에서도 느꼈는데 혼자서 도와드릴 수 있는 인원은 5명 정도가 한계인 것 같다.

가까이서 보니 어떤 부분에서 어려워하는지 빠르게 느낄 수 있었고 바로 설명해 드리면서 진행이 빨라지게 되었다. 그전에 1:1 온라인 미팅을 왜 요청 안 하셨는지도 좀 이해하게 되었는데 내가 생각했던 건 혼자 보시다가 궁금한 내용을 정리해 오면 나랑 얘기하면서 그 부분에 대해 답변을 하고 이후 다시 작업해보고 하는 것이었는데 실제로 오프라인에 모이고 보니 10분마다 막히거나 궁금한 부분이 생기고 하다 보니 따로 온라인 미팅을 잡아서 하기가 어려운 상태였다.

실제로 오프라인 스프린트를 진행하고 작업도 진행되고 난 다음에는 온라인으로 따로 추가 설명이 가능한 상태가 되었다.

컨트리뷰톤 결과

그렇게 열심히 6주를 하고 14분 중 10분만 남게 되었다.

  • mocha 외의 프로젝트도 포함해서 총 22개의 PR을 올렸고
  • 마침 6.2.2 릴리스가 있어서 2분은 컨트리뷰터로도 등록되었고
  • mocha에 5개의 PR이 머지되었고
  • mocha-examples에 3개의 PR이 머지되었고
  • 다수의 이슈를 올리고 댓글에서 논의가 진행되었다.

이 글에서도 기록 차원에서도 정량적으로 정리를 했지만 오픈소스 기여 과정이란 것이 Merge된 풀리퀘스트 뿐 아니라 올렸다가 닫히거나 리뷰를 받으면서 계속 다듬어 가는 과정, 이슈 등에서 논의하는 과정도 다 포함된다고 생각하기 때문에 그런 부분을 최대한 경험하게 하려고 노력을 했다. Pull Request가 올라가고 머지되면 좋긴 하지만 그렇게 돌아가는 기여라는 게 거의 없고 대부분은 험난한 리뷰와 논의 과정을 거쳐야 하므로 Merge 자체에 너무 집착하지 않고 과정에 더 집중할 수 있기를 바랬다.

컨트리뷰톤 결과 발표

처음 시작할 때도 과정에 집중할 거고 수상에는 관심 없다고 강조하긴 했는데 최종 결과에서 장려상을 받았다. 상은 내가 받는 건 아니고 당연히 참가하신 분들이 받는 건데 결과도 좋게 나와서 다행이다.

배운 것들

결론부터 말하면 참여하길 잘했다 싶을 정도로 만족하고 있다. 고인물들 사이에서만 놀다 보니 몰랐던(정확히는 알았지만 까먹은) 부분들을 많이 곱씹어볼 수 있었다. 이런저런 활동을 하고 다니면서도 학생분들이나 이제 개발을 시작하는 분들은 단방향으로 내가 전달하는 발표나 강의 등이었기 때문에 앞에서 말한 대로 사람들이 뭘 어려워하는지 전혀 감을 잡지 못했던 것 같다.

너무 당연하게 사용하는 수많은 용어와 개념들로 설명 아닌 설명을 하면서 "어? 여기서 막힌다고?", "그럼 어디부터 설명해야 하는 거지?"같은 생각을 많이 하면서 느낀 점이 많다.

그리고 열정적으로 눈 반짝이면서 질문하는 모습을 보니까 그 에너지가 전달된 듯 나도 재밌어져서 집중할 수 있게 된 것 같다. (혼자 생각이지만) 뒤로 갈수록 설명하는 것도 좀 더 쉬워진 느낌이기도 하고...

보통 내가 하던 활동과는 다른 형태의 활동이라서 더 재밌었던 것 같다.(물론 6주가 넘어가면 너무 힘들 것 같긴 하다.) 6주간 꽤 자주 연락하면서 지내고 같이 코딩하다 보니 앞으로 또 어디서든 뵈면 상당히 반가울 것 같다. 같은 업계니 또 어디서 만날지 모를 일이고.. ㅎㅎㅎ

2019/12/04 01:49 2019/12/04 01:49