리눅스(Linux)와 유닉스(Unix) 시스템의 핵심을 이루는 기본 유틸리티 집합인 코어유틸즈(Coreutils) 개발팀이 최근 수많은 기능 요청들을 채택하지 않은 이유를 상세히 공개했습니다. 개발팀은 기존 도구의 조합으로 충분히 구현 가능하거나, 복잡성에 비해 효용성이 낮거나, 혹은 특정 도구의 범용성을 해칠 수 있는 요청들을 거절했다고 밝혔습니다. 이는 단순히 기능을 추가하는 것을 넘어, 시스템의 안정성과 유닉스 철학을 유지하려는 개발팀의 노력을 보여줍니다.
거절된 기능 요청들은 `cat`, `chmod`, `cp`, `cut`, `date`, `dd`, `df`, `du`, `join`, `ls`, `mv`, `rm`, `shred`, `sort`, `stat` 등 다양한 핵심 명령어에 걸쳐 있었습니다. 예를 들어, `cp --resume`과 같은 복사 재개 기능은 이미 `rsync`라는 강력한 도구가 존재하기 때문에 거절되었고, `du --sort`처럼 용량 정렬 기능은 `du -h | sort -h`와 같이 기존 `du`와 `sort` 명령어를 조합하여 충분히 구현할 수 있다는 이유로 채택되지 않았습니다. 또한, CSV 처리처럼 복잡한 기능은 별도의 전용 유틸리티가 더 적합하다고 판단했으며, `rm --parents`처럼 상위 디렉터리까지 삭제하는 기능은 지나치게 위험하다고 보아 거절했습니다. 이는 각 도구가 하나의 명확한 역할을 수행하고, 더 복잡한 작업은 여러 도구를 파이프(pipe)로 연결하여 해결하는 유닉스 철학을 충실히 따르는 접근 방식입니다.
이러한 코어유틸즈 개발팀의 결정은 단순한 기능 추가보다는 시스템의 일관성, 안정성, 그리고 각 도구의 명확한 역할 유지를 중요하게 생각한다는 점을 시사합니다. 새로운 환경 변수나 전역 설정 파일보다는 셸(shell) 별칭(alias), 함수, 래퍼 스크립트(wrapper script)를 통해 사용자가 기본 동작을 변경하는 방식을 권장하는 것도 같은 맥락입니다. 이는 개발자가 모든 사용자의 요구사항을 충족시키기 위해 무작정 기능을 늘리기보다는, 사용자가 기존 도구를 유연하게 활용하여 자신만의 솔루션을 만들 수 있도록 하는 것이 더 효율적이라는 판단을 보여줍니다. 결과적으로 코어유틸즈는 핵심적인 기능에 집중하고, 불필요한 복잡성을 피함으로써 견고하고 예측 가능한 시스템 환경을 제공하려는 노력을 지속하고 있습니다.