Google 프로그래밍 경진대회(Summer of Code) 및 크롬 확장 프로그램

저는 웹 개발에 열정적인 중국의 2학년 학생입니다. 1학년 때 대학의 기술 클럽에 가입했습니다. 이 동아리에서 코딩과 오픈소스를 처음 접했습니다. 클럽에서 코딩을 좋아하는 비슷한 생각을 가진 파트너들을 만났습니다. 2023년 초에 Google Summer of Code에 대해 알게 된 것도 이 채널을 통해서였습니다. Google에서 주최하는 이 글로벌 프로그램은 학생들을 오픈소스 조직과 연결하고 오픈소스 활동에 참여하여 여름을 유용하게 보내도록 안내합니다.

한 번 시도해 보고 신청서를 제출했습니다. 다행히 합격했습니다. Chrome 확장 프로그램 샘플 저장소에 기여하며 보낸 여름은 기억에 남고 소중한 시간이었습니다. 물론 그 밖에도 효과적인 커뮤니케이션, 코딩 기술, 계획 능력 등 많은 것을 배웠습니다.

GSoC 2023이 종료되기에 앞서 GSoC에서의 경험을 공유하고자 합니다. 이 게시물에서는 제가 참여한 경험을 바탕으로 GSoC의 일반적인 절차를 간단히 소개합니다. 도움이 되기를 바랍니다.

GSoC에 참여한 이야기

Chromium GSoC 2023 프로젝트에 지원했으며, 주요 작업은 관련 스크립트 및 문서를 포함하여 기존 Chrome 확장 프로그램 샘플을 Manifest V3에서 작동하도록 업그레이드하는 것이었습니다.

처음 시작할 때

2023년 2월에 GSoC에 대해 처음 알게 되었지만 아직 신청할지 확실하지 않았습니다. 당시 몇 가지 우려사항이 있었습니다.

  • 내향적이고 영어가 모국어가 아니므로 멘토와의 소통이 어려울 수 있습니다.
  • GSoC 커뮤니티는 전 세계에서 참여하기 때문에 시간대 차이를 처리하기가 어려울 수 있습니다.
  • GSoC는 경쟁이 치열할 수 있는 유명한 프로그램이므로 제게는 가능성이 희박해 보입니다.

하지만 이러한 문제는 모두 문제가 되지 않았습니다.

제 이야기를 시작하기 전에 2022년 초에 저에게 일어난 일에 대해 말씀드리고자 합니다. 이 사건은 GSoC에 참여할 수 있는 기회이기도 했습니다. Manifest V2를 기반으로 하는 브라우저 확장 프로그램을 Manifest V3로 이전하고 싶었습니다. 이전을 완료하려면 문서를 참고하고 모든 API 변경사항을 이해해야 했습니다. 참고할 만한 관련 샘플이 있는지도 검색해야 했습니다. 새 API를 이해하고 코드를 전송하는 것이 쉽지 않습니다.

그래서 GSoC 프로젝트 목록을 둘러보다가 MV3와 관련된 아이디어를 접했을 때 매우 기뻤습니다. Manifest V3 확장 프로그램 샘플을 개선하고 향후 개발자를 위한 편의 기능을 제공하고자 했습니다.

3월에 담당 멘토 중 한 명인 올리버에게 제 의도를 간단히 설명하는 이메일을 보냈습니다.

GSoC 프로젝트 참여 신청서

안녕하세요.

저는 중국에서 컴퓨터 공학 학부생으로 공부하고 있습니다. GSoC에서 Chrome 확장 프로그램 샘플 관련 프로젝트에 대해 알아보고 Manifest V3 샘플을 개선하는 데 관심이 있었습니다. API 샘플을 다뤄본 경험은 많지 않지만 웹 개발 및 MV3 확장 프로그램 개발 (https://github.com/daidr/paimon-webext) 경험이 있어 MV3 API 샘플의 중요성을 깨달았습니다. 따라서 MV3 API 샘플을 배우고 기여하고자 합니다. 이 프로젝트에 아직 신청할 수 있나요?

감사합니다.

얼마 지나지 않아 올리버와 올리버의 상사인 알리로부터 답장을 받았습니다. 질문에 답변하고 GSoC의 구체적인 규칙과 일정에 관한 세부정보를 제공해 주었습니다. 또한 많은 소중한 참고 자료를 공유해 주셨습니다.

이 격려는 나를 더욱 힘차게 만들었고 앞으로 나아가겠다는 의지를 다지게 했습니다. GSoC 2024 등 예정된 오픈소스 이벤트에 참여하고 싶다면 첫걸음을 떼는 것이 가장 중요합니다. 주저하지 말고 용기 있게 도전해 보세요.

지원하기 전에 프로젝트의 코드를 확인하고 문서를 훑어봤습니다. GSoC에서는 참여자가 커뮤니티에 익숙해질 수 있도록 거의 한 달 동안의 커뮤니티 결속 기간을 제공하지만, 사전 지식을 바탕으로 압박감을 완화하고 보다 타겟팅된 제안서를 작성할 수 있었습니다.

프로젝트에서 제공한 시작 버그를 해결하려고 했습니다. 이러한 문제는 비교적 간단하여 프로젝트를 빠르게 이해하는 데 도움이 되었습니다. 당시 멘토가 아니었지만 멘토인 올리버에게 감사드립니다. 설명이 필요할 때마다 이메일에 즉시 답장해 주시고 기다려 주면서 문제를 해결해 주셨습니다. 제안서 작성 중에 문제가 발생하면 멘토에게 제안서를 보내 개선이 필요한 부분이 있는지 확인할 수도 있습니다.

승인받기

제안서 작성은 신청하기 전에 해야 할 마지막 작업입니다. 제안서에는 신청 양식 외에도 아이디어, 목표, 일정이 포함되어야 합니다. 작업하려는 프로젝트에 따라 제안서 템플릿이 추가로 제공될 수 있습니다. 온라인에서 참고할 수 있는 기성 제안서 예시가 많이 있습니다.

초안을 완성한 후 멘토에게 보내 의견을 구했습니다. 신청서를 제출하면 오랜 시간이 걸립니다. 5월 초에 합격했다는 알림을 받았습니다.

코드 작업

초기 결합 기간에는 먼저 남은 시작 버그를 처리하고 배워야 할 새로운 기술이 있는지 확인했습니다. 나머지 시간은 문서를 읽는 데 보냅니다.

멘토와 논의한 후 태스크에 할당되는 시간을 더 합리적으로 조정하기 위해 일부 목표를 조정했습니다. 또한 모든 API 샘플을 나열하고 개발자가 필요한 샘플을 빠르게 찾을 수 있도록 기본 필터를 제공하는 새로운 developer.chrome.com 페이지를 만드는 아이디어도 논의했습니다. 나에게는 다소 복잡한 작업이었고 멘토와 함께 프로젝트를 정의하고 제품 요구사항 문서 (PRD)를 작성하는 데 꽤 오랜 시간이 걸렸습니다.

이 대규모 작업을 위해 샘플 저장소에 저장소를 탐색하고 확장 프로그램 샘플 목록과 해당 샘플에서 사용하는 API가 포함된 JSON 파일을 생성하는 자동화 스크립트가 필요하다고 판단했습니다. 이제 developer.chrome.com 문서 저장소에서 이 파일을 사용하여 페이지를 빌드합니다.

먼저 Babel을 사용하여 샘플 코드의 추상 문법 트리를 분석하고 사용된 API를 식별하는 방법을 고려했습니다. 이 아이디어를 멘토와 공유한 결과, 멘토가 이전에 비슷한 작업을 했던 것을 알게 되었고, 이 접근 방식의 실현 가능성을 확인했습니다. 코드를 완성한 후 멘토와 팀원들이 코드 세분화에 주의를 기울이고, 코드 스타일을 표준화하고, 함수를 적절하게 문서화하는 등 유용한 제안을 해주었습니다.

크고 작은 여러 검토를 거친 후 코드가 병합되었습니다. 전체 대화목록은 GitHub에서 확인하거나 실시간 페이지를 확인할 수 있습니다.

결론

GSoC이 가져다 준 점이 무엇이냐고 묻는다면, 무엇보다도 브라우저 확장 프로그램 API와 관련된 지식을 이해할 수 있었던 것이 가장 큰 성과라고 생각합니다. 문서를 읽고 새 샘플을 작성하여 다양한 브라우저 확장 프로그램 API에 대해 자세히 알아보았습니다.

또한 GSoC에 참여하기 전에 거의 경험하지 못했던 포괄적인 코드 검토 절차를 따르고 PRD를 만드는 등 다양한 기술을 습득했습니다. 또한 GitHub 작업을 사용하여 워크플로를 자동화하고 Babel을 사용하여 모든 확장 프로그램 샘플을 탐색하고 사용된 API를 추적하는 방법을 배웠습니다. 또한 Nunjucks 템플릿 엔진을 처음 사용해 보았습니다. 이러한 능력은 프로그래밍에 필수적이며, 배울 수 있어 기쁩니다. 오픈소스 커뮤니티에 참여하는 것은 즐거운 일입니다.

올여름은 잊을 수 없는 추억을 많이 안겨 주었습니다. 코딩을 하면 매우 만족스럽습니다. 인내심 있는 멘토를 만나 도움을 받았고 흥미로운 지식을 배워 경험을 풍부하게 할 수 있었습니다.

컴퓨터 공학 분야의 지식은 끝이 없습니다. 다른 사람들과 비교해 보니 오픈소스에 대한 나의 이해는 빙산의 일각에 불과하다는 것을 깨달았습니다. 하지만 작은 도움이라도 큰 도움이 됩니다. GSoC는 오픈소스에 참여하기 위한 좋은 출발점이라고 생각합니다.

또한 향후 오픈소스 활동에 참여할 때 도움이 되기를 바랍니다.

Google Summer of Code에 참여하고자 하는 모든 사용자를 위해 몇 가지 제안사항을 전해 드립니다.

  1. 나에게 적합한 아이디어 선택: 아이디어를 찾을 때는 관심분야가 가장 중요하고 그다음은 기술입니다. 이 전략을 사용하면 참여 프로세스 전반에 걸쳐 열정을 유지할 수 있습니다.
  2. 양보다 질: GSoC에 참여할 가능성을 높이기 위해 여러 제안서를 제출할 수 있습니다. 하지만 인간의 에너지는 제한적이므로 품질이 더 중요하다고 생각합니다. 결국에는 두 개 또는 세 개의 아이디어에 집중하는 것이 더 도움이 될 수 있습니다.
  3. 새로운 것을 두려워하지 마세요. 프로젝트에서 사용해 보지 않은 기술을 주저하지 말고 시도해 보세요. 거의 한 달 동안 커뮤니티와 소통하며 익숙하지 않은 기술을 익히고, 한여름 내내 이를 구현할 수 있습니다. 도전해 보세요.
  4. 프로젝트에 미리 익숙해집니다. 예를 들어 개발 문서를 읽고, 이전 커밋 기록 및 문제를 살펴보고, 이전 풀 리퀘스트를 훑어봅니다. 프로젝트에 대해 사전에 전반적인 이해를 하면 더 포괄적인 제안서를 작성하는 데 도움이 됩니다.
  5. 소통 유지: 멘토와 정기적으로 소통하고, 지원하기 전이나 합격 후 문제에 직면할 때는 언제든지 질문하세요. 대부분의 멘토는 문제를 해결하는 데 도움을 주려고 합니다. 이렇게 하면 멘토가 학습자의 진행 상황도 확인할 수 있습니다.

읽어 주셔서 감사합니다.