2024
home
체험형 프로그램
home
🥲

[슬픈 코드] 사연 3

안녕하세요, 저는 RustPython 프로젝트에 참여하고 있는 멘티 박명훈 입니다.
제가 야심차게 제시해서 머지되었던 코드가 안타깝게도 많은 문제를 낳고 얼마 지나지 않아 revert되었던 경험을 공유하고자 합니다.
오픈소스 컨트리뷰션 아카데미가 시작하고, RustPython 프로젝트에도 저와 다른 참가자 분들이 많은 PR을 올려주셨습니다. 하지만 처음 기여를 시작하시는 분들에게서 공통적으로 나타나는 실수가 있었습니다. 바로 포맷팅을 하지 않고 올려, 포맷팅 CI에서 실패하는 것이었습니다. 물론 코드를 커밋하기 전에 간단한 포맷팅 스크립트를 돌리면 해결되는 문제였지만, 아직 기여에 익숙하지 않은 분들에게는 너무나도 잊기 쉬운 문제였습니다.
물론 멘토님께서 도와주셔서 해결할 수 있었지만, 이러한 문제를 사전에 방지할 수 있지 않을까? 하는 생각이 들었습니다. 그러던 중, 제가 동아리에서 쓰던 precommit hook이 생각났습니다. 이를 통해 커밋 전에 자동으로 포맷팅을 해준다면, 더이상 포맷팅으로 인한 CI 실패는 없을 것이라는 생각이 들었습니다. 멘토님도 괜찮은 거 같다는 말씀을 해주셔서 저는 야심차게 작업을 시작했습니다. 관련해서 만들어져 있는 precommit crate를 찾고, 프로젝트에 추가했습니다. Rust의 crate 시스템에 많이 익숙하지 않아 조금 삽질을 했지만, 결국 PR을 올렸고, 약간의 논의와 수정 끝에 머지에 성공했습니다.
RustPython에 기여하는 분들이 포맷팅 관련해서 신경을 쓰지 않아도 되는 결과를 꿈꿨던 것과는 다르게, 제가 미처 생각하지 못했던 부분에서 문제가 발생했습니다. 제가 바로 해결할 수 없고, precommit crate 관련해서 발생한 문제라는 것이 확실한 상황이여서 결국 precommit을 추가한지 얼마 되지 않아 프로젝트에서 제거하게 되었습니다. 제가 야심차게 제시한 해결책이 머지되었을 때에는 참 뿌듯했다가도, 제거했을 때에는 참 아쉬웠던 기억이 납니다.