crates.io 인증 및 게시에서의 GitHub 의존성

crates.io 인증 및 게시에서의 GitHub 의존성

Rust 패키지 레지스트리인 crates.io는 현재 사용자가 Rust 패키지를 로그인하고 게시하기 위해 GitHub 계정을 보유할 것을 요구합니다. 이는 GitHub에 대한 시스템적 의존성을 생성하며, 비판론자들은 이것이 핵심 언어 생태계의 "shadow dependency"가 되어서는 안 된다고 주장합니다.

중앙 집중식 인증의 시스템적 위험

Crates.io는 인증을 위해 GitHub에 의존하므로, 공식 레지스트리에 crate를 게시하고자 하는 모든 사용자는 GitHub 계정을 유지해야 합니다. 이러한 중앙 집중화는 Microsoft 소유의 단일 호스팅 플랫폼에 대한 의존성을 유발하는 문제적인 설계 선택으로 간주됩니다.

"crates[.]io가 여전히 로그인을 위해 GitHub 계정을 요구하고, 따라서 Rust 패키지를 게시하기 위해 요구한다는 점이 꽤 엉망이라고 생각합니다. GitHub는 언어 생태계의 shadow dependency가 되어서는 안 됩니다."

일부에서는 crate가 어디든 호스팅될 수 있고 의존성이 인증에 국한된다고 주장하지만, 다른 이들은 crates.io가 기본 레지스트리이자 생태계의 핵심 구성 요소이기 때문에 제3자 플랫폼에 대한 의존성이 치명적인 결함이라고 주장합니다.

GitHub로부터의 디커플링(Decoupling) 과제제

crates.io를 GitHub와 결합시킨 원래의 설계 결정 사항들을 되돌리는 것은 상당한 기술 부채를 포함하는 어려운 과정으로 설명됩니다. 이 논의는 분산형 생태계라는 이상과 이를 유지하기 위한 제한된 리소스의 현실 사이의 긴장을 강조합니다.

레지스트리 유지 관리의 리소스 제약

공식 레지스트리를 유지 관리하는 것은 리소스가 제한된 노력입니다. 기여자에 따르면, 업무 부하가 매우 적은 수의 유급 유지 관리자에게 크게 치우쳐져 있습니다.

"분명히 말씀드리자면: crates.io 작업을 위해 급여를 받는 사람은 약 한 명입니다. 그 사람은 해당 프로젝트에 대해 상당한 설계 및 리뷰 지원을 제공해야 하며(그리고 계속 제공할 것입니다), 하지만 궁극적으로, 운영을 지속하는 것이 우선순위를 가져야 합니다."

기술 부채 및 설계 선택

인증을 위한 GitHub 의존성은 시간이 흐르면서 기술 부채를 축적해 온 좋지 않은 원래 설계 선택으로 특징지어집니다. 이러한 문제를 해결하기 위한 진전이 이루어지고 있지만, 이 의존성을 제거하는 것은 레지스트리의 핵심 아키텍처 때문인 것으로 분석됩니다.

생태계 분산에 대한 대안적 관점

일부 기여자는 문제가 단순히 인증을에만 국한되지 않는다고 제안합니다. 더 넓은 문제는 패키지 생태계에 대한 단일 중앙 레지스트리 개념 자체이며, 일부는 이것이 본질적으로 결함이 있는 모델이라고 주장합니다.

"단일 중앙 레지스트리라는 개념 전체가 절대적으로 끔찍합니다. crate는 어디든 호스팅된 crate에 의존할 수 있어야 합니다."

이러한 관점은 Rust 생태계가 중앙 집중식 레지스트리 모델에서 완전히 벗어나, crate가 어떤 플랫폼에 호스팅된 패키지에든 의존할 수 있게 함으로써 GitHub나 crates.io 자체를 포함한 특정 엔티티에 대한 의존성을 줄임으로써 더욱 견강하게 될 것이라고 제안합니다.

Sources