회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
개발자를 찾습니다. 당신이 적격입니다.
PyCon US 원정대 시리즈
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
PyCon US 원정대 시리즈
④ 무작정 오픈 소스 컨트리뷰터 도전하기
미국에 간다. 그것도 개발 행사 참여를 위해. 망가진 캐리어의 바퀴를 손수 고치고 어설프게 출국 준비를 하면서도 실감이 나질 않았다. 회사에는 이미 아껴둔 휴가를 미련 없이 던져둔 상태였다. (역시 연차는 아끼는 게 남는 것이었다) 상사와 동료들은 여행 후기를 꼭 들려달라고 말했다. 몇 달 전부터 미국 갈 거라며 광고 내고 다닌 효과가 있었다.
인생 첫 미국 여행의 목적을 PyCon US로 잡은 건 여러 이유가 있었지만, 하나로 요약하면 이 여행이 더 의미 있는 시간이 되었으면 해서다. 명색이 태평양을 건너는 대장정인데 단순한 이유로 가기에는 시간이나 비용이 만만치가 않았다. 미국 땅 한번 밟아보고 싶었다, 라는 말로는 부족했다. 뭔가 더 있어야 했다. 두고두고 기억할 만한 경험, 떠올리는 것만으로도 재밌었다 싶은 그런 여정이었으면 했다. 첫술에 배부르랴라는 옛말이 있지만, 나는 첫술에 배탈 나는 것도 괜찮다고 생각하는 사람이다.
PyCon을 선택한 것이 우연은 아니다. 사실 나는 해외 콘퍼런스와 행사를 잘 모른다. (AWS re:invent 정도?) 그러나 작년 6월 즈음 있었던 PyCon US 참가 후기 모임에 호기심이 생겨 참여했다. 그때 각자 경험을 공유하는 걸 보고 나도 한번 가보고 싶다고 마음먹었다. 물론 당시에는 실제 계획이고 뭐고 없었지만 되돌아보면 그때부터 서서히 마음의 준비를 하고 있었지 않나 싶다. 이번에 함께한 PyCon US 원정대를 모두 만나기도 했고. 이들이 없었으면 재정 지원 신청은 물론이고 출국 준비조차 제대로 못 했을 거다.
여행을 준비하면서 PyCon US에서 가장 경험해 보고 싶은 것이 뭔지 고민했다. 키노트, 메인 세션도 좋고, 참여자들이 직접 여는 오픈 스페이스도 있고, 한국과는 달리 라이트닝 토크도 활발하다고 들었다. 그러나 개인적으로 가장 해보고 싶은 것은 스프린트(Sprint)에 참여해서 컨트리뷰터가 되는 것이었다.
앞선 PyCon US 완전 정복 글에서 나오듯, 스프린트는 크게 멘토 스프린트(Mentored Sprint)와 개발 스프린트(Development Sprint) 두 개로 나뉜다. 하지만 흔히 PyCon에서 ‘스프린트’라고 부르는 행사는 후자인 개발 스프린트다. 이번 PyCon US 2024의 스프린트는 메인 콘퍼런스가 끝난 다음날인 5월 20일 오전 8시부터 23일 오후 11시까지 총 4일간 진행되었다. (나는 이 중 마지막 날을 제외한 22일까지만 스프린트에 참여했다.)
스프린트란 간단히 말해 “오프라인으로 모여 오픈소스에 기여하자!”다. PyCon US 공식 홈페이지에서는 스프린트를 ‘팀과 함께 오프라인에서 당신이 선택한 오픈 소스 프로젝트에 기여하고 그 과정에서 배우고 성장하고 즐기는 것’으로 정의하고 있다. 가장 강조되는 것은 ‘오프라인 네트워킹’과 ‘오픈 소스 기여’, 이 두 가지다.
어쩌면 너무나도 당연한 일이다. 편안하게 집에서 온라인으로 보는 선택지가 있음에도 세계 각국에서 사람들이 모여드는 목적은 현장에서만 경험할 수 있는 것이 존재하기 때문이다. 대부분은 실제로 다른 개발자나 엔지니어들과 만나 서로 배우고 성장하는 과정이다. 이는 PyCon US의 모토이자 이념인 ‘By the community, for the community(커뮤니티에 의한, 커뮤니티를 위한)’와도 이어진다.
오픈 소스 역시 함께 성장하기 위해 코드를 모두에게 공개하고, 프로젝트에 관심이 있는 모든 사람이 기여하고 발전시켜 나간다. 그러니 PyCon US의 스프린트는 파이썬 커뮤니티의 강화와 오픈 소스 생태계의 발전을 연결하는 상징적인 행사라고 할 수 있다. 괜히 전체 기간 9일 가운데 절반에 가까운 4일을 잡아먹는 이벤트가 아니라는 생각이 들었다. 어떤 프로젝트든 일단 시작하면 한없이 길어질 수 있다는 점도 한몫했겠지만.
스프린트는 PyCon US 참가자라면 누구나 참여할 수 있다. 특별히 신청 절차 같은 것도 없다. 다만 그렇다고 “일단 가서 부딪혀 봐야지!” 하고 가기에는 생각보다 심적인 부담이 컸다. 특히 파이썬 초심자는 아무것도 모르는 상태로 가면 헤맬 수 있으므로 아래 설명할 몇 가지는 봐두고 가면 좋다.
PyCon US 홈페이지에서 개발 스프린트(Development Sprint) 항목을 찾아 들어가면, 이번 스프린트에서 기여할 수 있는 오픈 소스 프로젝트 목록과 해당 프로젝트에 대한 간단한 소개 글, 어떤 기여를 할 것인지에 대한 설명을 볼 수 있다. 이 목록은 꾸준히 갱신된다. 따라서 일찌감치 재정 지원을 확정했다면, 어떤 프로젝트가 있는지 미리 체크해두는 것도 좋다. PyCon US 2024에서는 오픈 소스 프로젝트 19개를 홈페이지에서 확인할 수 있었다. 만약 잘 모르는 오픈 소스뿐이더라도, 공식 문서나 프로젝트에 대한 설명 링크를 클릭해 작지만 지식을 얻을 수 있다.
PyCon US 공식 홈페이지에서는 처음으로 스프린트에 참여하는 사람들을 위한 가이드북 문서를 제공한다. 스프린트에서는 생각보다 할 수 있는 일도, 기여할 수 있는 영역의 범위도 넓다. 테스트하기, 버그 잡기, 새로운 기능 추가하기, 문서 보강하기 등 사실상 개발 범위에 해당하는 모든 영역이라고 볼 수 있다.
따라서 스프린트에 익숙한 사람이 아니라면 일단 목표를 설정하는 부분에서부터 막히게 된다. 나는 그냥 “오픈 소스 컨트리뷰터가 되어보면 좋겠어요.”라는 간단한 목표여서 어떤 영역이라도 기여만 하면 그만이었지만, 스프린트에 참여하는 목적은 제각각일 수 있다. 이슈 하나는 꼭 잡아보고 싶다거나, 이 오픈 소스의 특정 기능에 대해서 좀 더 공부하고 테스트해 보고 싶다는 것도 목표가 될 수 있다.
이런 이들을 위해 가이드북이 도움을 준다. 글을 읽으면 초심자라도 스프린트의 흐름을 이해하고 그림을 그릴 수 있다. 물론 영어의 압박이 있긴 하지만 독해 공부를 한다고 치고 읽어보자. 다들 공식 문서 끙끙대면서 읽어보지 않는가. 할 수 있다.
비단 스프린트에만 적용할 이야기는 아니다. 어디서든 경험자의 조언은 소중하다. 다행히 함께 PyCon에 참여하는 한국인 원정대의 여러 사람이 스프린트 참여 경험을 가지고 있었다.
스프린트는 1~2일 차가 가장 활발하며, 이후에는 흔히 말하는 고인물들만 남아 참여율이 떨어진다는 정보도 얻었다. 특히 “누구라도 스프린트에서 기여를 할 수 있고, 주변 사람들이 정말 잘 도와준다”는 조언에 용기가 났다.
여러 번 말하지만, 스프린트의 핵심 중 하나는 네트워킹이다. 스프린트라는 이벤트는 그 특성상 기술적인 네트워킹을 마음껏 해볼 수 있는 매우 좋은 기회다.
영어에 아주 익숙하지 않으면 하고 싶은 말이 많은데도 입을 열지 못하는 안타까운 상황과 마주할 수 있다. 내 경험상 한 번 입을 닫기 시작하면 끝까지 합죽이로 있을 때가 많았다. PyCon US에서는 그러면 안 된다. 익숙하지 않더라도 억지로 입을 열어 다른 사람과 대화할 수 있어야 한다. “내가 테스트를 끝냈다”, “나 이슈 고쳤다”, “리뷰 해달라” 정도만 말할 수 있어도 된다.
자, 이제 정말로 스프린트를 하러 가보겠다. 스프린트가 시작되는 20일, 본 행사가 끝난 다음 컨벤션 센터를 찾았을 때 나는 좀 당황했다. 당장 어제까지 콘퍼런스와 세션 발표가 이뤄지던 홀이 이미 깔끔히 정리되어 있었기 때문이다.
하지만 멈추지 않고 안내 데스크가 있는 곳으로 가다 보니, 스프린트 진행 장소를 안내하는 패널이 서 있었다.
스프린트는 원래 19일까지 오픈 스페이스와 각종 서밋이 열렸던 행사장 3층 전체에서 진행한다. 위 사진 속 라운지 같은 공간에서는 스프린트를 진행하던 사람들이 즉석에서 프로젝트를 열거나 쉴 수 있다. 여기에 현재 스프린트에서 참여할 수 있는 오픈 소스 프로젝트와 그 위치를 알려주는 패널이 서 있다.
일정표만 봐도 뒤로 갈수록 점점 휑해지는 것이 느껴졌다. 또 공식 홈페이지에 나온 오픈 소스 프로젝트가 전부가 아니었다. PyCon이라는 행사 특성상 즉석에서 프로젝트가 생겨나거나 원래 있던 프로젝트에서 파생되어 새로 나온 프로젝트도 있었다.
나는 이미 참여할 프로젝트를 어느 정도 정해 왔기 때문에 크게 고민하지 않고 스프린트가 진행되는 방을 찾을 수 있었다. 이 방들은 모두 붙어 있어 한 프로젝트에 참여하다가 다른 프로젝트를 구경하러 돌아다니기 쉬운 구조였다.
스프린트가 열리는 방은 사진처럼 원형 테이블이 6~7개 정도 놓인 커다란 강의실이었다. 가운데에 멀티탭이 하나씩 놓여 있었으며 의자는 푹신푹신했던 것 같다. 나는 20일 9시가 좀 넘어 컨벤션 센터에 도착했는데, 그때도 이미 사람들은 활발히 참여하는 중이었다. PyCon US에서는 작업할 개인 노트북을 제외한 거의 모든 것을 제공해 준다.
내가 가장 먼저 참여한 오픈 소스 프로젝트는 Plotly Dash로, 데이터 분석과 시각화를 구현하는 라이브러리였다. 평소에도 데이터를 기획하고 정제해 대시보드로 만드는 일을 하고 있었기 때문에, 오픈 소스 프로젝트에서도 가장 관심이 가 참여하게 되었다.
이렇게 미리 홈페이지에서 참여하고 싶은 프로젝트를 찾아 들어갔지만, 되돌아보면 그냥 기분 따라 아무 데나 들어갔어도 재미있었을 것이다. 물론 지금 와서 그렇게 말하는 거지 실제로 얼굴에 철판 깔고 초면인 사람들만 가득한 자리에 끼어들어 가기는 쉽지 않았다. 스프린트는 10개 이상 방에서 열린다. 문틈으로만 슬쩍 봐도 진지한 얼굴로 맥북을 뚫어져라 보고 있는 사람들이 한 트럭이었다. 얼마나 집중하고 있는지 건드렸다간 불을 뿜을 것 같은 사람들도 몇몇 보였다. 첫 참여자라면 여기서 쪼는 게 정상일 거다. 그러나 도망가면 본전도 못 건지기에 용기를 내야 했다.
원래도 희박한 용기를 바닥까지 싹싹 긁어모아 테이블로 다가갔는데, 놀랍게도 아무런 일도 생기지 않았다. 다들 자기 할 일 하느라 바쁠 뿐이었다. 스프린트에 참여하는 첫 단계는 ‘나도 이 프로젝트에 참여하고 싶다’라는 의사를 소리 내어 표명하는 것이다. 여러 프로젝트가 한 강의실에서 진행되는 경우가 대부분이기 때문에, 해당 프로젝트를 진행하는 테이블을 찾아가 참여 의사를 표명해야 한다. 그러면 먼저 와 있던 사람들이 주섬주섬 자리를 만들어 주고, 해당 프로젝트의 메인 컨트리뷰터가 다가와 친절하게 인사를 한다.
PyCon US의 오픈 소스 프로젝트는 거의 해당 오픈 소스의 메인 컨트리뷰터(오픈 소스에 핵심적인/많은 기여를 한 사람)가 리드한다. 새로운 참여자가 스프린트 참여 의사를 밝혔을 때, 메인 컨트리뷰터가 다가와 “이 소스를 써본 적이 있는지? 써 봤다면 얼마나 써봤는지?” 질문한다. 묻는 이유는 간단하다. 그 오픈 소스를 얼마나 아는가에 따라 기여할 수 있는 정도가 달라지기 때문이다. 당연하지만 경험이 많고 이해도가 높을수록 더 풍성하게 참여할 수 있다. 메인 컨트리뷰터들은 해당 프로젝트에 대해 가장 잘 아는 사람들이다. 그러므로 기술적인 질문들을 주고받는 것은 물론 앞으로 운영 계획과 더 개발하고 싶은 부분, 아쉬워하는 부분에 대해서도 들을 수 있다.
하지만 나는 Plotly Dash를 써본 경험이 없었다. 시각화 라이브러리라는 것 외에는 잘 모르기도 했다. 테이블에 나와 같은 사람이 몇 있었고, 그룹이 둘로 나뉘었다. 첫 번째 그룹은 라이브러리를 써본 적이 있고 숙련도가 있는 사람들이 모였다. 그들은 Plotly Dash로 시각화 앱을 만드는 작업을 시작했다. 두 번째 그룹은 초심자 그룹으로 나처럼 라이브러리 사용 경험이 없거나 익숙하지 않은 참여자들이었다. 우리는 튜토리얼을 진행하고 메인 컨트리뷰터가 주는 과제를 해결했다.
대부분 스프린트는 이런 식으로 진행한다. 물론 스프린트에 참여하는 메인 컨트리뷰터 수나 성향에 따라 조금씩 차이는 있다. Plotly Dash 메인 컨트리뷰터의 경우 교수님 같은 느낌으로 하나하나 챙겨주려고 했다. 다음으로 참여한 Pyscript, Pydantic는 좀 달라, “대충 니가 알아서 하다가 필요하면 불러라~.” 같은 느낌이었다.
그다음 참여한 프로젝트는 Pyscript였다. 이 프로젝트는 어느 정도 알고 있었지만, 실제로 자주 사용한 것은 아니라서 환경 구축과 튜토리얼부터 시작했다. ‘튜토리얼만 진행하다가 스프린트 끝나는 게 아닐까’하는 우울함이 들던 찰나, 공식 문서 링크 중 하나에서 404 에러가 뜨는 것을 발견했다. 확인해 보니 링크 주소가 이상했다. Pyscript의 공식 문서 깃허브에 들어가 소스를 찾았다. 보통 하위 문서의 마크다운으로 이어지는 다른 링크와 달리 그 링크에는 로컬 호스트 주소가 붙어 있었다. ‘혹시 다른 링크 중에도 안 되는 게 있나?’하고 찾아봤더니 또 있었다.
이렇게 스프린트를 하다 문제를 발견했을 때 플로우는 이렇다.
이슈(issue) 작성 → 이슈 해결 → 로컬 테스트 → PR(Pull Request) 작성 → 메인 컨트리뷰터 리뷰 → 메인/마스터 브랜치 머지(main/master branch merge)
일단 이슈를 작성해서 띄우고 메인 컨트리뷰터인 Jeff에게 이 얘기를 했다. 그는 웃으며 “네가 고쳐서 머지하면 되겠네!”라고 했다. 그렇게 얼떨결에 작업을 시작했다. 하위 마크다운 문서 링크에 생뚱맞은 링크가 들어 있거나 경로가 잘못된 것들을 고치는 일뿐이라 작업 자체는 오래 걸리지 않았다. PR을 올리기 전, 로컬 서버에서 새로 고친 링크가 잘 작동하는지 확인하고 메인 컨트리뷰터에게 리뷰 요청을 보냈다.
리뷰 요청을 보내자 메인 컨트리뷰터들이 확인했다. 곧 응답이 왔다. “문제없는 것 같다”고, “잘했다”고 했다. 그러더니 갑자기 테이블을 두드리며 카운트 다운을 하기 시작했다.
“3, 2, 1, 머지!”
순간 내가 만든 PR의 상태가 Merged로 바뀌었고, 그 테이블에 있던 사람들은 물론 다른 테이블에 앉아 있던 사람들 모두 환호하며 박수를 쳐 주었다. 그러고 보니 아까 비슷한 광경을 봤는데, 알고 보니 이는 컨트리뷰팅에 성공해 프로젝트에 기여한 사람을 축하해주는 의식이었다. 그렇게 나는 얼떨결에 오픈소스 첫 기여에 성공했다.
다음으로 참여한 Pydantic에서 기여한 부분 역시 공식 문서 업그레이드였다. 이번에는 이슈를 확인하다가 공식 문서에서 예시와 설명이 부족한 부분을 발견했다. 함께 스프린트를 진행한 다른 참여자와 함께 예시를 추가하며 컨트리뷰팅에 성공했다.
이처럼 오픈 소스 컨트리뷰터가 되는 것은 생각보다 어렵지 않다. 초심자나 프로젝트에 대한 지식이 없는 사람이라도 나처럼 운 좋게 문제를 찾을 수 있다. 그 문제를 해결하기만 하면 컨트리뷰터가 되는 것이다. 문제가 쉽게 풀리지 않아도 괜찮다. 옆에 있는 메인 컨트리뷰터나 함께 참여하는 사람들한테 질문하면 함께 해결해 나갈 수 있다.
링크 하나, 코드 한 줄 고치는 것이 얼핏 보았을 때 큰 일이 아닌 듯이 보일 수 있다. 그러나 이 역시 엄연히 프로젝트에 기여하는 방법이다. 특히 공식 문서는 해당 프로젝트를 소개하는 공간이다. 처음 이 소스를 사용하려는 사람에게 명확한 정보를 제공해야만 하는 곳이기도 하다. 문서화에 기여하는 것 역시 프로젝트에 큰 도움이 된다.
오픈 소스에 한국어 문서가 없다면 문서화를 진행해 보는 것도 훌륭한 접근이다. 실제로 이번에 같이 스프린트에 참여한 PyCon US 원정대 멤버는 파이썬 웹 프레임워크인 Flask 프로젝트의 한국어 번역을 진행했다. 그 역시 그렇게 컨트리뷰터가 되었다.
나는 꼭 컨트리뷰터가 되고 싶었기 때문에 도전했지만, 꼭 프로젝트에 기여하지 않아도 괜찮을 수 있다. 그렇다면 함께 스프린트에 참여한 사람들과 이야기하는 데 집중하는 것도 좋은 방법이다. 파이콘은 파이썬에 관심 있는 사람이라는 공통점을 제외하면, 총천연색 각양각색의 사람들이 모이는 만남의 장이다. 서로 회사의 개발 문화나 코드 컨벤션에 대해 이야기해 볼수도 있고, 파이썬으로 어떤 일을 하고 있으며 해내고 싶은지 수다를 떨어봐도 좋다. 운이 좋으면 메인 컨트리뷰터가 구비한 간식을 공짜로 먹을 수도 있다.
나는 3일간 스프린트에 참여했지만, 처음에는 사람들에게 말을 걸고 질문하는 게 어색해 망설이거나 말을 삼키는 일도 잦았다. 참가자 및 메인 컨트리뷰터와 가장 활발하게 교류할 수 있는 시기는 스프린트 1~2일 차다. 그때 최대한 많은 사람과 교류해 보는 것이 좋다. 물론 영어 울렁증이 그렇게 쉽게 가시는 것은 아니기 때문에, 튜토리얼이나 메인 콘퍼런스 기간을 활용해 영어 커뮤니케이션에 익숙해지는 연습이 큰 도움이 된다.
스프린트 이야기를 주로 했지만, PyCon US는 그 외에도 즐길 만한 것이 풍성한 행사였다. 나 역시 좀 더 적극적으로 나섰다. 전처럼 그저 세션을 듣기만 하는 것이 아니라 파이레이디스(Pyladies) 부스의 자원봉사자로도 나섰다. 비록 선정되지 않았지만 라이트닝 토크에 도전도 했다.
무엇보다 국적과 인종을 가리지 않고 파이썬을 사랑하는 사람들과 이야기하는 것이 가장 큰 기쁨이었다. 참여를 망설이는 사람이 있다면 꼭 한번 가보라고 강력하게 추천하고 싶다. 개인적으로 다음에 참여할 때는 서밋(summit)과 오픈 스페이스 쪽에 집중을 해보고 싶다. 특히 다큐멘테이션 세션(documentation summit)을 끝까지 듣지 못한 것이 너무 아쉬웠다.
9개월 전 덜덜 떨면서도, 눈 꾹 감고 비싼 화상 영어를 결제한 나 자신에게 박수를 쳐주고 싶다.
요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.