Чтобы опубликовать крейт в 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.

Следующая новость · 28 из 32 Читать дальше
🚀Tech

Minimus открыла бесплатный доступ к защищённым образам контейнеров — тред спрашивает, кто заплатит потом

Стартап снял платный доступ к каталогу минималистичных образов с уменьшенным числом CVE, и CTO сам пришёл в комментарии. Первый вопрос — не о безопасности.

★ 117 · 💬 74 · images.minimus.io · 3 мин