메인테이너 풀 리퀘스트 가이드


메인테이너라면 풀 리퀘스트를 리뷰하는 일을 꽤 자주 하게 돼요. 이 문서에는 Exercism에 특화된 풀 리퀘스트 리뷰 지침이 담겨 있어요.

연습 문제 풀 리퀘스트 리뷰하기

개념 연습 문제나 실습 연습 문제의 풀 리퀘스트를 리뷰하는 일은 이런 유형의 연습 문제를 둘러싼 수많은 규칙 때문에 부담스럽게 느껴질 수 있어요. 그래서 메인테이너가 1차 리뷰를 하는 데에만 두세 시간이 걸리고 수십 개의 댓글이 달리기도 해요. 개념 연습 문제에는 목표나 내용이 비슷한 파일(예: 연습 문제와 개념 소개)도 있어서, 너무 멀리 나아가기 전에 그중 하나를 먼저 완벽하게 만드는 데 집중하는 게 꼭 필요해요.

이런 작업 흐름을 좀 더 매끄럽게 만들기 위해 다음과 같은 권장 사항을 마련했어요.

권장 사항: 시니어 메인테이너 한 명이 1차 리뷰를 맡아요

1차 리뷰를 꼭 시니어 메인테이너 한 명이 맡아야 하는 이유는 다음과 같아요.

  • 리뷰 작업이 중복되지 않아요
  • 기여자와 메인테이너가 짝을 이뤄 풀 리퀘스트를 함께 작업하게 되어, 기여자가 혼자 하는 게 아니라는 느낌을 받을 수 있어요
  • 다른 메인테이너가 서로 상충되는 리뷰 댓글을 남기지 않아요

권장 사항: wip 상태로 병합해요

기여자와 메인테이너가 둘 다 연습 문제에 만족하게 되면, status 값을 wip (작업 중)로 설정한 채로 연습 문제를 병합해요. 이 상태인 연습 문제는 학생에게는 공개되지 않지만, 최상위 멘토들은 볼 수 있게 될 거예요(나중에 이 기능을 구현하고 나면요). 그러면 평판이 높은 사용자가 연습 문제를 직접 테스트하고, 연습 문제를 고치거나 개선할 이슈나 풀 리퀘스트를 만들 수 있어요.

이 접근 방식의 가장 큰 이점은 다음과 같아요.

  • 원래 기여자와 메인테이너 짝이 모든 걸 완벽하게 만들어야 하는 부담을 덜어줘요
  • 여러 목소리가 뒤섞이는 거대한 풀 리퀘스트 사이클(관리하기 정말 어려워요)로 이어지지 않아요

실습 연습 문제 풀 리퀘스트 리뷰하기

권장 사항: 그 변경이 정말 problems-specifications에 속하는지 따져봐요

실습 연습 문제의 내용 중 일부(예: 소개)는 problems-specifications 저장소에 정의된 (공유) 메타데이터에서 가져와요. 그런 내용을 바꾸는 풀 리퀘스트를 리뷰할 때는, 그 변경이 다른 트랙에도 도움이 될지 따져봐요. 그렇다면 기여자에게 problems-specifications 저장소의 해당 파일에 풀 리퀘스트를 열어 보라고 제안해요.

일반 리뷰 권장 사항

권장 사항: 풀 리퀘스트마다 주 리뷰어 한 명

모든 풀 리퀘스트에는 주 리뷰어가 한 명 있어야 해요(맡는 메인테이너가 주 리뷰어가 돼요). 다른 메인테이너나 커뮤니티 구성원은 보조 역할을 맡아요.

보조 역할을 맡은 사람이 리뷰에 기여할 수 있는 방법은 크게 두 가지예요.

  • 맞춤법과 문법을 교정해 줘요. 단, 주 리뷰어의 1차 리뷰가 끝난 뒤에만 그래요. 기여자가 맞춤법과 문법 리뷰를 받아 고친 뒤에 메인테이너가 나타나서 더 근본적인 변경을 요구하면 답답할 수 있어요. 다시 말해, 교정은 근본적인 변경이 정리된 다음에(또는 후속 풀 리퀘스트에서) 하는 거예요.
  • 리뷰어에게 실행을 요구하지 않는 방식으로 짚어 줘요. 주 리뷰어가 생각해 봐야 하거나 놓쳤을 수 있는 부분에 댓글을 달고 싶다면, 의견을 밝히거나 질문 형태로 남겨 주세요. 그러면 기여자 입장에서 변경을 요구하는 게 아니라는 게 분명해져서 덜 헷갈려요. 주 리뷰어가 "무시당한다"고 느낄 가능성도 줄여줘요.

권장 사항: 관련 없는 것에는 댓글을 달지 않아요

풀 리퀘스트를 리뷰할 때는 풀 리퀘스트와 직접 관련된 것에만 댓글을 달아요. 그 외의 것은 이슈를 열거나 별도의 (후속) 풀 리퀘스트를 만들어 주세요.

권장 사항: 문서를 링크해요

가능하면 왜 그 부분에 댓글을 다는지 설명해 주는 문서를 항상 링크해 보세요. 그러면 논쟁으로 번질 가능성을 크게 줄일 수 있어요.

권장 사항: 다른 팀에 도움을 요청해요

풀 리뷰에 도움을 요청하고 싶다면, 핑할 수 있는 팀이 두 개 있어요.

  • @exercism/reviewers: 일반적인 리뷰
  • @exercism/github-actions: GitHub actions에 관한 질문