오픈소스 컨트리뷰션 아카데미는 약 한 달 간 Challenges 프로그램을 마친 뒤 선발된 인원에 한하여 Maters 프로그램을 진행한다.
어느덧 Challenges 가 끝날 시기가 되어, 회고를 해보려고 한다.
첫 마음
Node.js 코드는 부트스트랩 + 이벤트루프밖에 모르는데, 어떻게 코드를 수정하고 이게 반영이 될 수 있을까?
처음에는 너무 막막했다. 하지만 프로그램을 따라가며 마음이 바뀔 수 있었다.
Node.js를 직접 빌드해보면서 로그를 심으면 충분히 동작 흐름을 자세히 알아볼 수 있겠다는 생각이 들었다. 또 멘토님께 Node.js의 개발 방향성을 듣고,이 방향에 맞게 작은 것부터 시도할 수 있겠다는 작은 자신감이 생겼다.
도전
처음에는 문서 수정이 제일 만만해보여서 (다시 생각해보니 오타 수정 건이 아니라면 문서는 프로젝트의 얼굴이라고 할 수 있기에 이 부분을 가장 꼼꼼하게 리뷰할 것 같다), glob 함수의 pattern에 대한 description을 부연하는 PR을 올렸다. 첫 PR이라 commit 메시지나 markdown 에 대한 lint 확인을 못했다. 이를 수정해달라는 댓글이 달렸는데 작성자가 Jasnell 인 것을 보고 오랜만에 가슴이 뛰었던 기억이 난다. 하지만 Node.js가 glob 계열 함수를 구현하는데 사용하는 minimatch 의 정책을 그대로 따라갔기에 필요성에 대한 의문이 든다는 멘토님의 피드백이 있어 보류 중이다.
다음으로 관심있는 모듈 코드에서 TODO를 찾아보았다. worker threads 를 eval 모드로 실행할 때, 전역객체인 process._eval 이라는 비공식 프로퍼티를 사용하여 동작을 구현하는데, 이는 user land에서 monkey patch하여 오염될 가능성이 있어 내부에서만 접근가능한 방법을 사용하자는 코멘트가 있었다. 그래서 접근제어자를 추가하여 worker thread가 전달받은 스크립트를 실행하는 동안에는 프로퍼티 수정이 불가능하도록 하는 PR을 올렸다. 그러나 우회방법보다는 설계를 통한 보호하는 방향이 좋을 것 같다는 멘토님의 피드백과 코멘트가 있어 PR을 닫았다.
다음으로 validators.js의 함수로 같은 동작을 하는 코드를 대체하는 리팩토링 PR을 올렸다. 간단한 작업이라고 생각했지만, 의외로 콜라보레이터들이 꼼꼼한 리뷰를 달아주었고, 모두 납득이 되었기에 리뷰 반영 후 2명의 승인을 받아 머지가 되어 Node.js의 contributer 가 되었다!
위와 비슷한 작업이라고 생각하여, 안전성을 높이기 위해 자바스크립트 내장 함수를 primordials 함수로 대체하는 작업을 했다(비슷한 작업이 아니었다.) 문서를 확인하니 이 작업은 성능에 영향을 주기 때문에 충분히 신경을 써야하고, 기본 테스트 이외에 벤치마크 테스트까지 실행해야 했다. 특히 내가 수정했던 child_process의 fork는 벤치마크 러너의 뼈대를 이루는 함수여서 그런지, 벤치마크와 ci 테스트가 모두 실패했다.
앞으로의 목표
만약 Masters 과정에 선발된다면 Web Platform 지원범위를 늘리는 데 기여를 해보고 싶다.
'활동 > 오픈소스 컨트리뷰션 아카데미' 카테고리의 다른 글
| Node.js 컨트리뷰션 중간 회고 (2) | 2025.09.07 |
|---|---|
| 오픈소스 컨트리뷰션 아카데미 2025 참여형 멘티 선발 후기 (0) | 2025.07.06 |