Maintainer spotlight: Alejandra González (@blyxyas)
메인테이너 스포트라이트: Alejandra González(@blyxyas)
Rust와 Clippy 메인테이너 Alejandra González의 기여 여정을 소개합니다. Clippy의 온보딩 구조와 컴파일러 증분 빌드 성능 개선, 오픈소스 유지보수의 지속 가능성을 함께 다룹니다.
- 주제
AI 요약
Rust Content 팀이 Rust toolchain을 유지하는 기여자들을 소개하는 연재에서 Alejandra González(@blyxyas)를 다룹니다. Alejandra는 약 4년 전 Rust에 기여하기 시작했고 2023년 Clippy 팀에 합류했습니다. 현재는 Clippy 기여자를 돕는 한편, 최초의 Maintainer in Residence(MiR) 중 한 명으로 활동합니다.
Rust를 배우고 첫 기여를 시작한 과정
Alejandra는 스페인 출신으로, 13세 무렵 프로그래밍을 배우기 시작했습니다. JavaScript와 웹 개발을 먼저 접했지만 빠른 프로그램을 만들고 싶다는 성향과 맞지 않았고, C++도 시도했지만 오래 이어지지 않았습니다. 이후 YouTube에서 Rust 1.45를 접했고 borrow checker, trait, macro에 매력을 느꼈다고 말합니다.
Rust 학습에는 Rustlings를 주로 사용했습니다. 초보자용 자료는 지나치게 쉽고 고급 자료는 너무 어려운 경우가 많은데, Rustlings는 30분 안에 풀 수 있을 정도의 난이도로 개념을 익히게 해준다고 평가합니다. 특히 다른 언어와 비슷한 loop보다 enum처럼 Rust에서 새롭게 접하는 개념을 연습하기에 적합했다고 설명합니다. The Rust Book도 기술 학습서 중 실제로 추천할 수 있는 거의 유일한 책이라고 말합니다.
Rust를 사용하면서 기능과 개선점에 계속 아쉬움을 느꼈고, 기여 가이드를 읽은 뒤 Git을 배우며 첫 pull request(PR)를 준비했습니다. 입문 프로젝트로 추천받은 Clippy에 새로운 lint를 추가했습니다. 일부 언어에서 지수 연산자로 쓰이는 caret(^)이 Rust에서는 Exclusive OR(XOR) 연산자라는 점을 잘못 사용하는 코드를 경고하는 lint입니다.
첫 PR에서는 Git commit과 push를 여러 차례 잘못 만들었습니다. reviewer가 “squash those commits”라고 했지만 squash 방법을 몰랐고, 튜토리얼을 본 뒤에도 다른 branch의 변경 사항을 가져와 저장소를 엉망으로 만들었습니다. 지금은 다른 기여자의 Clippy PR을 돕고 있지만, 당시에는 기여자와 리뷰어의 시간을 낭비하는 것 같아 당황했다고 회고합니다.
Clippy가 기여 입문에 적합한 이유
Alejandra는 Rust compiler에 새 기능을 추가하는 것보다 Clippy 기여가 훨씬 쉽다고 설명합니다. Clippy에는 800개가 넘는 lint가 있지만 각각 독립적으로 구성되어 있어, 대부분의 lint는 Rust 파일 하나를 읽는 것만으로 구조를 파악할 수 있습니다. 새 lint를 구상했을 때 비슷한 아이디어가 이미 코드베이스에 있는 경우가 많아 기존 lint의 일부를 조합해 구현할 수도 있습니다.
그녀가 Clippy 팀에 합류하는 과정에서 큰 영향을 준 사람은 maintainer xFrednet입니다. 기술 지식뿐 아니라 다른 기여자를 대하는 태도가 인상적이었고, 덕분에 Rust Project에 환영받고 있다고 느꼈다고 합니다. Alejandra는 maintainer가 코드 품질만 지키는 guardian에 머물기보다 기여자의 곁에서 길을 안내하는 travel guide가 되어야 한다고 말합니다. 이 경험이 현재 새 기여자와 소통하는 방식에도 영향을 줬습니다.
증분 컴파일과 성능 개선
현재 Alejandra의 주요 목표는 Rust compiler와 Clippy의 성능을 높이는 일입니다. Clippy 외에는 compiler 내부의 incremental machinery를 개선하는 Project Goal에 참여하고 있습니다. 불필요한 재컴파일을 줄여 전체 빌드 시간을 낮추는 작업입니다. 규모가 큰 과제라 여러 팀과 논의하며 진행해야 하고, 생각보다 쉬운 부분과 생각보다 어려운 부분이 모두 있다고 설명합니다.
성능에 관심을 갖게 된 배경에는 어린 시절 사용한 느린 Pentium 4 컴퓨터가 있습니다. 당시에는 하드웨어 비용 때문에 할 수 있는 일이 제한됐고, 오늘날 Rust가 강력한 하드웨어를 살 수 있는 사람만 사용할 수 있는 언어가 되어서는 안 된다고 말합니다. 언젠가 Raspberry Pi에서도 전체 Rust workspace를 1분 안에 컴파일할 수 있기를 바란다고 했습니다. 현재는 아직 가능한 수준이 아니라고 덧붙였습니다.
성능은 에너지 사용과도 연결됩니다. 더 빠른 소프트웨어를 만들어 기술 발전을 이어가더라도 지구를 더 빠르게 소모해서는 안 된다는 것이 Alejandra의 생각입니다.
Maintainer in Residence와 유지보수의 지속 가능성
오픈소스에는 언제나 검토할 PR과 해결할 issue, 추가할 기능이 남기 때문에 장기간 유지보수하면 소진이 찾아옵니다. MiR는 필요한 유지보수 업무를 수행할 재정 지원을 제공하며, Alejandra는 현재 하루에도 여러 PR을 충분한 시간을 들여 검토한다고 말합니다. 작업을 서두르거나 품질을 낮추지 않아도 된다는 점이 이전과 가장 크게 달라졌습니다.
스페인의 중간 규모 도시에 거주하는 그녀에게 MiR 프로그램의 지원은 생활비와 비교해 큰 도움이 됩니다. 유지보수를 계속할지, 사무직을 구할지, 다시 공부할지 고민하던 불안이 줄었고 지금은 좋아하는 일을 할 수 있다고 말합니다. 동시에 항상 일해야 한다고 느끼지 않기 위해 “잠시 쉬어도 됩니다. 당신이 없어도 Rust는 무너지지 않습니다”라는 문장을 되새긴다고 전합니다.
Alejandra는 Rust for Linux 팀과의 교류도 언급합니다. Linux 개발자 일부가 Rust 팀에 도움을 요청하는 상호 협력이 이어지고 있으며, Linux가 Rust를 채택하는 모습을 보며 Rust Project의 작업이 실제 세계에 긍정적인 영향을 준다는 느낌을 받는다고 말합니다. 마지막으로 기술 업계의 해고와 불안이 이어지는 상황에서도 Rust 팀은 더 인간적인 언어를 만들기 위해 활동하고 있다며 커뮤니티에 계속 남아달라고 당부합니다. 또 가까운 몇 년 안에 incremental compile time이 크게 줄어들 것이라고 예고합니다.
원문: Rust Blog / 번역·요약: Trawling