Год назад в команде дистрибутива Solus произошли серьёзные изменения: кто-то ушёл, кто-то наоборот вернулся, и теперь пора подвести первые итоги. Что изменилось за этот год? И каких изменений стоит ждать в будущем?
Обновлённой команде Solus исполняется год: что уже изменилось и каких изменений стоит ждать
18 апреля 2014-го будет ровно год с тех пор, как Джош опубликовал заметку под заголовком «Новый курс», в которой он рассказал о грядущих изменениях в разработке дистрибутива. Значительную часть того поста он посвятил тому, что только предстояло сделать. Теперь же мы готовы рассказать вам о том, что мы успели сделать за минувший год.
Организационная работа
Расширение штата
Сейчас в команде Solus 19 человек, и у каждого из них есть доступ к пакетной инфраструктуре. Внутри команды мы выделили ещё несколько более мелких групп с разным уровнем доступа и разной степенью ответственности:
- поддержка специфических стеков ПО в репозиториях Solus
- социальные сети и модерация сообществ Solus
- поддержка серверов Solus и их инфраструктуры
- скучная административная работа
За этот год мы успели понять, что границы между этими группами сильно размыты, и теперь новые члены команды получают новые полномочия постепенно: чем больше умеет новый участник, тем больше полномочий и прав у него будет. Со временем группы перемешались и укрупнились. Получилась снова какая-то каша, но работает это всё довольно эффективно, и менять сложившийся подход мы пока не планируем.
Скучная административная работа
Единственная группа, которая, судя по всему, никуда не денется, занимается скучной административной работой. Они оплачивают счета, и у них есть доступ к аккаунту Open Collective, на котором хранятся ваши пожертвования.
Идея в том, чтобы доступ к критически важным ресурсам был сразу у нескольких человек. Если административными вопросами занимается лишь один член команды, его отсутствие ставит под угрозу развитие всего проекта. А так мы точно знаем, что хотя бы в рутинных вопросах мы в безопасности.
Распределение пожертвований
Мы бесконечно благодарны тем, кто поддерживает нас финансово. И, принимая пожертвования, мы обязуемся тратить их на действительно важные вещи. Эти деньги нужны для создания идеальной операционной системы, а не для пустых трат на собственные нужды.
Сейчас наши расходы делятся на две категории: фиксированные (оплата хостинга, электронной почты и т. д.) и опциональные (прямая плата участникам проекта). В 2023-м расходы на инфраструктуру заметно выросли, так как мы перенесли репозитории и сайт с сервера Рочестерского технологического института на платный хостинг.
Опциональные расходы также выросли. Раньше такие выплаты были единичными, и у нас скопился определённый резерв, который можно использовать в случае непредвиденных затрат. Мы признаём, что любой труд должен оплачиваться, но платить всем мы пока не можем. Каждая такая выплата проходит через голосования внутри команды.
Отчёты от всех тратах публикуются на странице в Open Collective.
Внутренняя документация
Вы когда-нибудь задумывались о том, какую работу нужно проделать, чтобы начать типичную пятничную синхронизацию? Как оказалось, ответа на этот вопрос мы тоже до недавнего времени не знали. Это знали лишь те, кто непосредственно занимался поддержкой пакетов. Так что теперь мы постарались подробно расписать внутренние правила, чтобы потом было проще подготовить новичков.
Сообщество
Регулярные отчёты о синхронизации
С лета 2023-го мы публикуем ежемесячные отчёты о синхронизации: мы перечисляем, что именно изменилось в дистрибутиве, а пользователи рассказывают о найденных проблемах.
За это у нас ответственны Эван и Рейли. Им каким-то образом удаётся сжать длиннющие чейнджлоги в читабельный пост на форуме.
Переход с IRC на Matrix
Переход с IRC на Matrix прошёл почти сразу после обновления состава команды. Возможностями Matrix мы пока довольны и регулярно вносим пожертвования на счёт Matrix.org.
Новый Справочный центр
Однажды, когда Джоуи не мог уснуть, он вдруг понял, что ему совсем не нравится наш Справочный центр, и следующие несколько дней он потратил на то, чтобы перенести его на Docusaurus. Теперь искать нужную информацию должно быть заметно проще и быстрее.
Чуть позже мы переписали содержимое справочного центра: постепенно расширили тематику, удалили устаревшую информацию и особое внимание уделили изменениям в установке пакетов.
Новый DevLog
В качестве эксперимента мы запустили журнал разработки. Он работает отдельно от основного сайта и ориентирован прежде всего на тех, кто понимает, что представляет из себя разработка подобных дистрибутивов. Сообщения в блоге максимально официальны и выверены, а сообщения в девлоге неформальные и простые.
Регулярные отчёты перед спонсорами
Наши спонсоры с Open Collective теперь регулярно получают отчёты по электронной почте. Для этого пришлось использовать новый почтовый хостинг, который поддерживает шаблоны. Со временем этот процесс всё больше автоматизируется.
Канал на YouTube
Канал на ютубе у нас когда-то уже был, но мы потеряли к нему доступ и долгое время ничего не выкладывали. Узнать старый канал можно по старому адресу Solus-Project.com. Теперь же мы завели новый канал. Информации там пока не особо много, но мы работаем над этим.
Редакция с XFCE
С релизом Solus 4.6 у нас появилась новая редакция с рабочим окружение XFCE на борту. Планируется, что она заменит редакцию с MATE. Сейчас мы работаем над инструментами миграции, которые автоматически переведут вас с MATE на XFCE.
Платформа для переводчиков
Для перехода с MATE на XFCE Джоуи написал отдельный инструмент под названием MATE Transition Tool (MTT), а я подумал, что было бы неплохо перевести его на максимальное количество языков. С этой целью мы отправились на Transifex и постарались найти столько добровольцев, сколько сможем.
Новые мейнтейнеры
Пока Solus был оффлайн, мы лишились многих ценных членов команды. К счастью, после возвращения мы увидели много знакомых лиц. А ещё нам удалось привлечь несколько новых участников.
Инфраструктура
Процесс миграции начался в апреле 2023-го. Основную работу выполнили Элгент, Эрмо, Айки, Джоуи, Джош, Рейли, Студи, Трейси и Зак. О чём конкретно тут речь:
- перенос хостинга на выделенный сервер с поддержкй Cloudflare CDN
- перенос сборщика пакетов на более мощный коммерческий сервер
- обеспечение совместного доступа для всех сотрудников
Переезд с Phabricator на GitHub
Следующим шагом стал стал переезд с Phabricator на GitHub. В те времена будущее Phabricator казалось неопределённым, а с GitHub знакомы все, кто так или иначе связан с разработкой.
Силке и Джоуи написали несколько инструментов для миграции из одного сервиса в другой и объединили около 500 отдельных репозиториев в один. В целом всё прошло почти безболезненно, и мы довольны результатом.
Цифры
С апреля 2023-го:
- мы проверили около 2 тыс. запросов от участников сообщества
- собрали 14 тыс. пакетов на новом сервере
- ежемесячно обслуживали около 15-20ТБ пакетных данных
Инструментарий и пакетная база
Solus гордится тем, что наши пользователи получают своевременные обновления системы. Это то, что отличает нас от других дистрибутивов Linux. Но у этого процесса есть и обратная сторона: чем дольше операционная система остаётся без обновлений, тем сложнее потом всё починить. И за то время, что наши серверы было оффлайн, система сломалась настолько, что мы до сих пор разгребаем последствия.
Постепенный отказ от Python2
Самый большой наш косяк – зависимость от Python2. Инструменты, необходимые для установки Solus, а также для обновления, установки, удаления и сборки отдельных пакетов изначально использовали именно Python2. Официальная поддержка Python2 прекратилась ещё в 2020-м, но мы всё ещё вынуждены им пользоваться.
Новый установщик
В качестве первого шага мы решили прекратить разработку и поддержку собственного установщика на базе Python2. Отныне Solus, как и многие другие дистрибутивы, будет использовать установщик Calamares.
Это позволит нам позаимствовать наработки других популярных дистрибутивов, и нам больше не придётся тратить время на необязательные проекты. Альтернативным планом было портирование собственного установщика на более современную версию Python, но это тоже лишь временное решение.
Мы благодарны Эвану за усилие и терпение, которые он проявил за время тестирования нового установщика в начале этого года. Теперь всё работает, как надо.
Новый Центр приложений
Когда-то мы были одними из первых, кто умудрился запихать в Центр приложений, как собственные пакеты, так и сторонние приложения. Но для этого мы также использовали Python2. Центр приложений Solus был уникален, в то время, как в других дистрибутивах обычно используются универсальные решения. И теперь мы хотим того же от собственной системы.
В качестве Центра приложений дистрибутивы с GNOME и KDE обычно предлагают своим пользователям GNOME Software и KDE Discover. Это удобные инструменты, поддерживающие работу с Flatpak-приложениями, и прямо сейчас Flatpak – единственное, чем мы готовы заменить наш сторонний репозиторий.
Портирование eopkg и ypkg на Python3
Ещё до того, как Solus получил привычное имя, Айки форкнул пакетным менеджер pisi на базе Python2 и на его основе собрал собственный eopkg, которым мы пользуемся и по сей день. Да-да, ещё одно приложение на Python2. И да, один из главных инструментов системы всё ещё основан на платформе, срок поддержки которой истёк уже четыре года назад.
Заменить eopkg – задача непростая. Нам нужен новый пакетный менеджер, который работал бы точно также, как и наш старый. Затем нам нужно заменить старый пакетный менеджер на новый, и так на каждом компьютере, где установлен Solus. И для этого нужно использовать тот самый пакетный менеджер, который мы и пытаемся удалить. Простого решения тут быть не может. Вот почему мы пока не торопимся и действуем так осторожно.
Простые пользователи редко обращают внимание на ypkg, но штука это не менее важная. Это важнейший инструмент в процессе установки Solus, преобразующий инструкции packege.yml в конкретные операции сборки. И он тоже написан на Python2.
Мы уже убедились в том, что новый eopkg устойчив к обновлением Python3: переход с python3.10 на python3.11 не вызвал никаких проблем.
Сейчас мы находимся на завершающей стадии портирования eopkg на Python3, ypkg уже портирован на Python3 полностью. Первые тесты показали ускорение работы с пакетами на 20-25%.
Рабочие процессы
Рабочий процесс – термин довольно широкий. Например, мы им пользуемся для обозначения повседневной работы по обновлению пакетов. Ближайшие улучшения касаются автоматизации и модернизации процессов, которые раньше приходилось выполнять вручную.
Переход с Makefile на go-task
Долгое время команды по упаковке записывались в Makefile. Райли предложил перейти на go-task, простой инструмент, написанный на языке Go. Теперь файлы будет заметно легче читать, редактировать и расширять.
Автоматическая проверка пакетов
Одно из преимуществ перехода на GitHub – автоматическая проверка. Например, если в Phabricator мы забывали поменять версию пакета, рецензент его просто не видел и мог пропустить. Теперь такого быть не должно.
Автоматическая проверка существенно облегчает работу, упрощает и ускоряет проверку новых пакетов, а мы в свою очередь можем сосредоточиться на более важных вещах, которые нельзя доверить машине.
Оптимизация обновления образов solbuild
Эрмо переработал процесс создания и развёртывания образов solbuild, которые используется для ускорения сборки пакетов. Образы теперь сжимаются для опимизации.
Новые скрипты для создания ISO-образов
Некоторые спонсоры проекта с Open Collective имеют доступ к дополнительным образам системы, которые создаются после каждой пятничной синхронизации. Создание подобных образов происходит автоматически. И всё благодаря Силке и Эрмо. Они автоматизировали процесс, и теперь Эван и Трейси избавлены от еженедельной рутины.
Скрипт для автоматической загрузки и тестирования
Большая часть времени, которое необходимо на создание релизных образов дистрибутива, мы тратили на ручное тестирование и проверку базовой функциональности. И чтобы избавить нас от скучной работы, Силке написал скрипт, который автоматически проверяет ISO-образы. Он автоматически проверяет разные варианты загрузки и установки, а результат сохраняет в виде снимков экрана на каждом этапе.
В результате у команды теперь заметно больше времени на настройку и оптимизацию, а количество тестов снизилось в разы.
В заключении
Текст получился довольно длинным, но зато максимально подробным. Это был долгий путь. Мы довольны достигнутым. Мы понимаем, что со стороны развитие дистрибутива кажется вялым и скучным (особенно на фоне того, что было раньше). Регулярная синхронизация, высокая производительность и дружелюбное сообщество – это лишь фасад, то, что видно всем без исключения. Но лишь единицы знают, какая кропотливая работа кипит за кулисами. Это был тяжелый, но довольно захватывающий год.
Спасибо, что вы с нами.
Дэвид Хардер,
Solus Project
20 апреля 2024