Чтобы опубликовать крейт в Rust, до сих пор нужен аккаунт GitHub
У crates.io с первого дня существует единственный способ войти: аккаунт GitHub. Если GitHub заблокирует вас — или просто упадёт — публикация остановится. В Rust-проекте это признают проблемой уже десять лет.
Связь глубокая: имена пользователей на crates.io совпадают с именами на GitHub, таблица users хранит столбцы gh_login и gh_id, а права команд на крейты привязаны к командам GitHub. Отвязать всё это — значит переписать аутентификацию на живом реестре.
RFC о поддержке нескольких провайдеров наконец принят, реализация началась. Но мейнтейнер Cargo называет настоящий тормоз: код написать можно, а скучную работу никто не оплачивает.
Один провайдер входа, без запасного выхода
Жалоба простая и давняя: чтобы опубликовать пакет в crates.io, центральном реестре Rust, нужно «войти через аккаунт GitHub (обязательно)» — и другой двери нет. Оригинальный пост описывает это как проблему цепочки поставок и доступности: одна сторонняя компания может заблокировать пользователя по своему усмотрению, а если GitHub не работает, публикация невозможна.
Связь не косметическая. Согласно issue с отслеживанием, имена пользователей crates.io совпадают с именами GitHub; таблица users содержит специфичные для GitHub столбцы gh_login и gh_id; владение крейтами через команды жёстко привязано к командам GitHub. Переделать это — значит рефакторить аутентификацию в реестре, из которого вся экосистема тянет пакеты каждую минуту.
Тред знает об исправлении — оно уже существует
Главный голос в треде считает риск решённым:
«Ни одна внешняя единственная точка отказа, способная блокировать пользователей по своему усмотрению, не должна контролировать доступ к проектам с открытым исходным кодом.» — John Nagle
Затем появился человек, который делает эту работу, с актуальным состоянием дел:
«Недавно принят RFC, разблокирующий это изменение… Реализация уже началась.» — мейнтейнер Cargo
Он же объяснил, почему это заняло десять лет, и причина не техническая: «Скучные и неинтересные задачи зависят от финансирования, от человека, готового это финансирование принять, и от ревьюера». Другие участники искали параллели в соседних экосистемах. Один указал на реестр PHP:
«Я научился ценить то, как устроен Packagist… например, публикацию только из исходного репозитория — нельзя загрузить артефакт, отличный от того, что хранится в исходниках.» — разработчик, упомянувший Packagist
А один участник вышел за пределы темы GitHub:
«Публикация Rust-крейтов не должна зависеть ни от какого одного интернет-ресурса, включая сам crates.io.» — комментатор о более широкой ставке
Эта последняя реплика переформулирует весь аргумент. Замена GitHub на OAuth-провайдер решает проблему блокировки по желанию; проблему реестра как единого доверенного ресурса это не затрагивает.
Получайте такие разборы каждый день
Главные истории Hacker News — на email, в Telegram или RSS.
Minimus открыла бесплатный доступ к защищённым образам контейнеров — тред спрашивает, кто заплатит потом
Стартап снял платный доступ к каталогу минималистичных образов с уменьшенным числом CVE, и CTO сам пришёл в комментарии. Первый вопрос — не о безопасности.