155일만에 머지된 Pull Request 이야기

이 글은 Nuxt.js 프로젝트를 만들어주는 도구인 create-nuxt-app 에 TypeScript 지원 Pull Request가 머지되기까지의 과정을 다룹니다.

오래 걸린 Pull Request라 과정이 정확히 기억나지 않아 기록만 남겨볼까 하는 마음에 적어보았습니다

사실 중요한 내용 : 아래 명령어로 새로운 Nuxt.js 앱을 TypeScript 기반으로 만들어보세요

npx create-nuxt-app <새 프로젝트 이름>

GitHub 활동 중 가장 지겹고 오래걸린 Pull Request였습니다. 머지되기 3일 전에는 매일 보는 Recent Activity에 떠있어서 머지 안할거면 그냥 닫아달라고 할까 고민도 했습니다.

시작

2019년 8월 어느날, Nuxt.js 프로젝트 중 TypeScript Nuxt Runtime 개발이 활발하게 시작된 것을 발견하게 됩니다.

프로젝트를 만드는 도구인 create-nuxt-app 로 만드는 앱에 TypeScript를 넣으려면 일단 JavaScript로 만들고 그 다음에 Typescript 런타임을 추가해야하는 불편함을 느꼈습니다.

개발(혹은 개발자) 경험

Nuxt.js 는 DX(Developer Experience)를 중요하게 생각하는 프로젝트입니다. 그 결과 매 업데이트마다 DX를 향상시키기 위한 내용이 포함되어 있습니다. 예를 들면 빌드 중 브라우저에 현재 빌드 상태를 보여주는 것이 있습니다.

create-nuxt-app 의 경우에도 DX의 측면에서 매우 좋은 도구로 사용됩니다. 아마 Nuxt.js를 사용하는 개발자들은 대부분 사용하고 있을 것 입니다.

TypeScript Runtime 라이브러리의 개선

2019년 9월 2일, Nuxt.js의 TypeScript Runtime 라이브러리는 초기단계였기 때문에 PR의 리뷰가 밀립니다.

https://github.com/nuxt/create-nuxt-app/pull/328#issuecomment-526953467

이 시기부터 @nuxt/typescript-runtime, @nuxt/typescript-build 두 라이브러리의 업데이트에 따라 주기적으로 버전 업데이트를 따라가기 시작합니다.

Pull Request의 Pull Request

@NickBolles는 제가 올린 Pull Request의 템플릿 처리에서 문제점을 발견하고 Pull Request의 Pull Request를 합니다. 물론 사소한 수정이었으므로 승인하고 계속 진행합니다. @NickBolles는 이 PR이 머지될 때까지 지속적으로 관심을 가져주었습니다.

물론 목적에 벗어나는 또 다른 PR의 PR은 받아주지 않았습니다. 다음에 직접 했으면 좋곘습니다

그리고 @kevinmarrec 은 PR 전체 과정에서 항상 리뷰를 꼼꼼히 해주었습니다.

승인

2019년 12월 4일 드디어 꾸준히 코드리뷰를 해준 @kevinmarrec과 Nuxt.js의 프로젝트 소유주인 @Atinux 등 Nuxt.js 팀의 승인을 받았습니다

나는 해결 못하겠으니까 직접 해달라

2020년 1월부터 CI 에서 lint 테스트에 계속 실패합니다. MacOS, Windows 에서 통과하지만 Ubuntu 19.04 등에서 실패합니다. 저는 Ubuntu 환경이 없었고 @kevinmarrec 이 Ubuntu를 쓰고 있는 중이라 직접 수정해 주었습니다.

뜬금 없는 승인

Nuxt.js 2.12가 릴리즈 되면서 갑자기 create-nuxt-app 에 PR이 머지되었습니다. 긴 기간동안 Nuxt.js의 많은 부분이 변경되었고 수정된 부분과 함께 같이 머지될 예정이었던 것 같습니다. Nuxt.js의 Discord에 들어가 있지 않아 어떤 이야기가 있었는지 전혀 파악을 못하고 있었습니다.

오픈소스의 괴로움 + 즐거움

여러 사람이 사용하는 프로젝트에 PR을 하고, 머지되는 기쁨이 오픈소스를 즐기는 방법이라고 생각합니다. 생각보다 길어지고 늘어진 PR은 사실 재밌지는 않습니다. 그리고 수정을 계속 요청하면 괴롭기도 합니다. 그래도 여러 사람이 함께 문제를 해결하는 과정은 개인프로젝트 및 오픈소스 프로젝트 외에도 회사 프로젝트에서도 좋은 영향을 미치게 되는 것 같습니다

다른 오픈소스를 하는 분들은 가장 오래 걸린 PR이 무엇일 지 궁금합니다.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store