나는 이런 식으로 문제를 조기에 발견하는 게 괜찮다고 생각함
LTS 릴리스 전에만 정리된다면 문제없음
나는 평범한 Ubuntu 사용자로서 이게 괜찮은지는 잘 모르겠음 uutils/coreutils의 테스트 호환성 그래프를 보면 아직 완전하지 않음
특히 date는 테스트 2개만 통과하고 3개는 건너뛰고 3개는 오류임
이런 상태로 프로덕션 준비 완료라고 보기 어렵다고 생각함
시스템 여러 대를 운영하다 보면 일부 구성요소는 너무 신뢰해서 문제 발생 시 의심조차 안 하게 됨
이런 버그는 개별 사용자에겐 사소할 수 있지만, 대규모 환경에서는 치명적임
오늘 하루 종일 디버깅하다가 결국 시스템이 명시적으로 금지된 곳으로 데이터를 보내고 있었음을 발견했음
결과적으로 시스템 전체가 멈췄고, 의존하던 도구가 깨지면 관리가 정말 힘들어짐
만약 Rust가 아닌 다른 언어였다면 개발자들이 엄청난 비난을 받았을 것임
핵심 유틸리티가 명확한 이유 없이 새로 작성된 버전으로 교체되고, 그게 너무 불안정해서 안정 배포판이 제대로 업데이트도 못 하는 상황이라면 괜찮다고 할 수 없음
실제 문제 설명이 부족한 게 아쉬움
마지막 커밋(링크)은 date 파싱을 GNU와 일치시키는 수정이었는데, 다른 댓글을 보니 원인은 그게 아닐 수도 있음
상위 댓글이 웃겼음 — “다음 Ubuntu 릴리스 이름은 Grateful Guinea-Pig일 것”이라고 함
Ubuntu changelog를 보면 버그가 date -r 관련임 changelog와 버그 리포트, 이슈, PR을 보면 date -r이 파일 수정 시각을 출력해야 하는데, Rust 버전은 그냥 무시했음
이런 기본 동작 누락은 “안전한 대체품”을 표방하는 프로젝트로서는 실망스러움
만약 이 버전이 coreutils의 공식 테스트를 통과했다면, 오히려 테스트 스위트가 불완전하다는 뜻일 수도 있음
Ubuntu 25.10은 사용 불가능할 정도라고 느꼈음. 비-LTS 버전에 대해 이렇게 말한 건 처음임
어떤 점이 그렇게 심각한지 구체적으로 설명해줄 수 있는지 궁금함
“수십 년간 검증된 C 유틸리티를 Rust로 다시 쓰는 건 장기적으로 좋을 수 있지만, 단기적 문제는 예측 가능했다”는 말에 공감함
하지만 “장기적”이란 게 얼마나 긴 기간을 의미하는지 의문임
FOSDEM 발표에서 uutils 개발자가 잘못된 벤치마크로 성능이 더 낫다고 주장했는데, 실제로는 locale 미지원 때문이었다는 점도 문제였음
관련 링크: FOSDEM 발표, 스레드1, 스레드2
하지만 이런 핵심 도구들도 결국 여러 번의 재작성을 거쳐온 결과물임. 너무 극단적으로 볼 필요는 없음
이런 재작성 대신, 같은 노력으로 형식 검증 시스템을 구축했다면 보안 측면에서 더 나았을지도 모른다는 생각이 듦
오픈소스 프로젝트가 개인의 명성 쌓기 수단으로 이용되는 경우도 있음
핵심 유틸리티를 새로 작성하는 건 포트폴리오에 큰 이점이 되기 때문임
guided state-space exploration이나 fuzzing의 최신 기술이 궁금함
기존 구현이 있다면 fuzzer가 두 버전의 동작을 비교해 화이트박스 검증을 할 수 있을 것 같음
이런 경우 property testing이 잘 맞을 것 같음
전체 입력 공간에 대한 proptest를 작성하려면 많은 노력이 필요하지만, CLI 인자가 안정적이라면 충분히 가능함
man 페이지 같은 자료를 기반으로 자동 생성도 가능함
Rust에서는 proptest 크레이트를, CLI 차이 검증에는 Python의 Hypothesis를 외부 호출로 사용하는 게 좋을 듯함
Hacker News 의견
나는 이런 식으로 문제를 조기에 발견하는 게 괜찮다고 생각함
LTS 릴리스 전에만 정리된다면 문제없음
uutils/coreutils의 테스트 호환성 그래프를 보면 아직 완전하지 않음
특히
date는 테스트 2개만 통과하고 3개는 건너뛰고 3개는 오류임이런 상태로 프로덕션 준비 완료라고 보기 어렵다고 생각함
이런 버그는 개별 사용자에겐 사소할 수 있지만, 대규모 환경에서는 치명적임
오늘 하루 종일 디버깅하다가 결국 시스템이 명시적으로 금지된 곳으로 데이터를 보내고 있었음을 발견했음
결과적으로 시스템 전체가 멈췄고, 의존하던 도구가 깨지면 관리가 정말 힘들어짐
만약 Rust가 아닌 다른 언어였다면 개발자들이 엄청난 비난을 받았을 것임
기존 coreutils에 개선이 필요할 정도로 문제가 있었는지 궁금함
관련 글: OpenBSD 메일링리스트
uutils에서의 패치 링크를 찾고 싶음
핵심 버그는
date -r <file>지원이 구현되지 않았는데 Ubuntu가 그 버전을 통합했다는 점임명령이
-r옵션을 조용히 무시하고 아무 일도 하지 않았음관련 이슈: #8621, PR #8630
마지막 커밋(링크)은 date 파싱을 GNU와 일치시키는 수정이었는데, 다른 댓글을 보니 원인은 그게 아닐 수도 있음
상위 댓글이 웃겼음 — “다음 Ubuntu 릴리스 이름은 Grateful Guinea-Pig일 것”이라고 함
Ubuntu changelog를 보면 버그가
date -r관련임changelog와 버그 리포트, 이슈, PR을 보면
date -r이 파일 수정 시각을 출력해야 하는데, Rust 버전은 그냥 무시했음이런 기본 동작 누락은 “안전한 대체품”을 표방하는 프로젝트로서는 실망스러움
Ubuntu 보안 공지 — 전형적인 사례 같음
Ubuntu 25.10은 사용 불가능할 정도라고 느꼈음. 비-LTS 버전에 대해 이렇게 말한 건 처음임
“수십 년간 검증된 C 유틸리티를 Rust로 다시 쓰는 건 장기적으로 좋을 수 있지만, 단기적 문제는 예측 가능했다”는 말에 공감함
하지만 “장기적”이란 게 얼마나 긴 기간을 의미하는지 의문임
FOSDEM 발표에서 uutils 개발자가 잘못된 벤치마크로 성능이 더 낫다고 주장했는데, 실제로는 locale 미지원 때문이었다는 점도 문제였음
관련 링크: FOSDEM 발표, 스레드1, 스레드2
핵심 유틸리티를 새로 작성하는 건 포트폴리오에 큰 이점이 되기 때문임
guided state-space exploration이나 fuzzing의 최신 기술이 궁금함
기존 구현이 있다면 fuzzer가 두 버전의 동작을 비교해 화이트박스 검증을 할 수 있을 것 같음
전체 입력 공간에 대한 proptest를 작성하려면 많은 노력이 필요하지만, CLI 인자가 안정적이라면 충분히 가능함
man 페이지 같은 자료를 기반으로 자동 생성도 가능함
Rust에서는
proptest크레이트를, CLI 차이 검증에는 Python의 Hypothesis를 외부 호출로 사용하는 게 좋을 듯함