Підсумки півроку роботи проекту 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% відомих проектів випустили за минулі півроку щонайменше одну нову версію

Джерело: opennet.ru

Додати коментар або відгук