Итоги полугода работы проекта Repology, анализирующего информацию о версиях пакетов

Прошли очередные полгода и проект Repology, в рамках которого собирается и сравнивается информация о версиях пакетов из множества репозиториев, публикует очередной отчёт. Целью проекта является улучшение взаимодействия мантейнеров пакетов из различных дистрибутивов как между собой, так и с авторами ПО — в частности, проект помогает быстрее обнаруживать выпуски новых версий ПО, следить за актуальностью пакетов, унифицировать схемы именования и версионирования, поддерживать метаинформацию в актуальном состоянии, делиться патчами и решениями проблем и улучшать переносимость ПО.

  • Число поддерживаемых репозиториев превысило 250. Добавлена поддержка Cygwin, distri, Homebrew Casks, just-install, KISS Linux, Kwort, LuaRocks, Npackd, OS4Depot, RPM Sphere. Удалён прекративший развитие репозиторий Antergos. Поддержка GNU Guix удалена (из-за изменений на сайте Guix, сделавших парсинг невозможным) и позднее возвращена (благодаря реализации со стороны Guix регулярного дампа метаданных в JSON формате), а заодно улучшена.
  • Введено требование для репозиториев помимо имени пакета и версии предоставлять URL (домашние страницы или ссылку на дистрибутив) — эта информация позволяет надёжно разрешать многочисленные конфликты имён с которыми сталкивается проект. Репозитории, на данный момент не предоставляющие такой информации запланированы к удалению.
  • Основной репозиторий исходного кода проекта разбит на два (демон для обновления данных репозиториев и web приложение, обеспечивающее работу сайта), в коде завершено внедрение аннотаций типов (весь код проекта теперь проходит mypy --strict) и приведение в соответствие PEP8.
  • Добавлена поддержка legacy веток версий. К примеру, теперь Repology может сообщить об устаревшей PostgreSQL 11.2 (так как последняя версия в 11-й ветке — 11.5) даже при наличии в репозитории более новой версии 12.0 (ранее все версии ниже последней в репозитории помечались как legacy и не могли иметь статус устаревших). В связи с этим большая часть проектов ранее разбитых по мажорным версиям (например, wxwidgets28/wxwidgets30) была объединена.
  • Добавлена возможность корректной обработки проектов с параллельными несовместимыми схемами версионирования. Например, FreeCAD у которого 0.18.4 и 0.18.16146 соответствуют одному релизу.
  • Переработаны список и индивидуальные страницы мантейнеров — теперь статистика мантейнера собирается раздельно по репозиториям. Практика показала, что репрезентативная агрегированная статистика невозможна из-за того что пакеты, сохраняя мантейнера в метаданных, могут мигрировать в другие репозитории без его ведома и лишаясь его поддержки по факту (при этом отследить это автоматически не представляется возможным). Позже они могут устареть, и связывать этот факт с оригинальным мантейнером было бы некорректно — такая ситуация вызвала недовольство мантейнеров Gentoo из-за наличия Funtoo — по сути, не контролируемого ими форка Gentoo, сохраняющего информацию о мантейнерах. Привязка статистики к репозиториям позволила решить эту проблему, заодно информация о мантейнерах стала более подробной и структурированной.
  • Добавлена экспериментальная поддержка нового типа badge, представляющего собой матрицу версий выбранных проектов во всех репозиториях. Этот инструмент полезен, например, для получения общего представления о состоянии (наличие пакета, версия, её актуальность и соответствие заданному минимуму) зависимостей какого-либо проекта (или просто произвольного списка проектов). Данная функциональность запрошена (и используется) проектом PostGIS.
  • Улучшена поддержка 404 страниц проектов — в частности, если запрошенного проекта нет, но имя ранее встречалось (например, в качестве названия пакета который был отнесён к проекту с другим названием), то пользователю предлагаются варианты проектов которые он мог иметь в виду, на манер «страниц разрешения неоднозначности» Wikipedia. Пример.
  • Улучшена интеграция с Wikidata — помимо улучшений в импорте данных, реализован и запущен бот, обновляющий информацию о ПО в Wikidata по данным из Repology. Напомним, что Wikidata постепенно становится основным источником структурированной информации для Wikipedia (в контексте новости — фактов о программном обеспечении, таких как история версий, лицензия, сайт, поддерживаемые ОС, автор, пакеты в различных дистрибутивах и т.п.), что позволяет поддерживать актуальность данных в одном месте, вместо десятков локализованных версий страницы каждого проекта. Например, карточка проекта Nginx в Wikipedia транслирует информацию только из Wikidata.
  • За прошедшие полгода было обработано более 500 заявок (reports) на добавление/изменение правил с целью более корректной обработки отдельных проектов.

Рейтинг репозиториев по общему количеству пакетов:

  • AUR (49462)
  • nix (48660)
  • Debian и производные (32972) (лидирует Raspbian)
  • FreeBSD (26921)
  • Fedora (22337)

Рейтинг репозиториев по количеству неуникальных пакетов (т.е. пакетов, присутствующих также в других дистрибутивах):

  • nix (41815)
  • Debian и производные (24284) (лидирует Raspbian)
  • AUR (22176)
  • FreeBSD (21831)
  • Fedora (19215)

Рейтинг репозиториев по количеству свежих пакетов:

  • nix (23210)
  • Debian и производные (16107) (лидирует Raspbian)
  • FreeBSD (16095)
  • Fedora (13109)
  • AUR (12417)

Рейтинг репозиториев по процентному соотношению свежих пакетов (только для репозиториев с 1000 и более пакетами и не считая upstream коллекций модулей типа CPAN, Hackage, PyPi):

  • Ravenports (99.16%)
  • Arch и производные (85.23%)
  • Homebrew (84.57%)
  • nix (84.55%)
  • Scoop (84.02%)

Общая статистика:

  • 252 репозиторев
  • 180 тысяч проектов
  • 2.3 миллиона отдельных пакетов
  • 36 тысяч мейнтейнеров
  • 153 тысячи зафиксированных релизов за последние полгода (прошлый обзор содержал ошибку, за предедущие полгода было зафиксировано 150 тысячи релизов)
  • 9.5% известных проектов выпустили за прошедшие полгода как минимум одну новую версию



Источник: http://www.opennet.ru/opennews/art.shtml? num=51856

Полный текст статьи читайте на OpenNet