Интервью с Вадимом Жуковым, мейнтейнером KDE и Qt в OpenBSD

На основе вопросов пользователей linux.org.ru состоялось интервью с Вадимом Жуковым, мейнтейнером KDE и Qt в OpenBSD. Получены ответы на самые интересные вопросы.

Как вы оцениваете эволюцию KDE от 3 к 4 ветке? Оправданы ли такие революционные изменения интерфейса?

Прежде всего должен сказать, что вспоминать KDE3, конечно, можно, но нет большого смысла. TDE остаётся маргинальным, а больше никто базу KDE3 не развивает, насколько мне известно.

Если говорить об интерфейсе пользователя, то все прелести наработок компенсируются тремя «но»: падучесть Plasma, тормоза Akonadi и падучесть Akonadi. К сожалению, и в эпоху KDE5 в этой области остаются проблемы... В итоге я сам не использую KDE как именно DE, но с удовольствием пользуюсь рядом KDE-программ: KMyMoney, Digikam, KSnapshot, Filelight и другими. В плане интерфейса мне очень импонирует глубокая степень интеграции в KDE и, как мне кажется, большая ориентированность на пользователя с инженерным мышлением.

Как вы адаптируете KDE под OpenBSD? С чем больше всего сложностей возникает?

Главная сложность — нехватка времени. Проект KDE — это более десяти миллионов строк кода и несметное число пакетов с кучей зависимостей, которые регулярно меняются. То есть много рутинных действий, которые, к сожалению, проблематично автоматизировать: регулярно всплывают какие-нибудь особенные ситуации.

Серьёзной проблемой является Plasma Workspaces (это уже из мира KDE5): чтобы его портировать. нужно сначала втаскивать в базовую систему (точнее, в Xenocara) поддержку Wayland. Мною подготовлены порты для собственно wayland и wayland-protocols, но, опять же, не хватает времени даже на то, чтобы пропихнуть в апстрим патчи для поддержки kqueue...

Также всё больше становится необходимым портирование Qt WebEngine. Очень надеюсь закончить этот процесс до начала учебного года — после этого студенты уже не дадут мне столько времени. :)

Кем вы видите себя через 5 лет? Чего вам не хватает в своей работе?

А какая зарплатная вилка? ;) Шучу.

Если речь про основную работу, то не хватает умения пробивать идеи (в частности, выбивать ресурсы), а также банальной аккуратности.

Если про образовательный процесс, то не хватает компьютерных аудиторий.

Ну а если всё же речь про open source, то не хватает времени на всё, что хочется сделать. :) Думаю, я бы отказался даже от нынешней основной работы (на которую трачу три дня в неделю), если бы можно было обеспечивать сравнимый уровень жизни.

Общались ли вы с Тео де Раадтом? Какое впечатление он на вас произвел?

Общался неоднократно. Впечатление — потрясающе эрудированный и очень быстро мыслящий человек. Думает и говорит как пулемёт. Очень энергичный и полностью живёт проектом OpenBSD.

Вы вообще читаете ЛОР и как часто? Зарегистрированы ли на ЛОРе или пишете из-под анонимуса? Какое впечатление ЛОР произвел на вас?

Читаю очень редко. В комментарии ходить — жалко время тратить, а новости те же, что и на OpenNet, например. Ничего лично, просто так исторически сложилось. Так что изредка меня заносит на ЛОР шальным ветром гиперссылок, но не более того.

Вроде бы зарегистрирован, но в любом случае не пишу. Полез было восстанавливать учётную запись и понял, что она была, похоже, зарегистрирована на мой первый почтовый ящик, ныне канувший в Лету вместе с хостером E-mail.ru.

Как вы относитесь к Wayland? Появится ли он когда-нибудь в OpenBSD?

Отношусь — с сомнением. С одной стороны, код Wayland мне скорее нравится, и ряд заложенных в него идей звучит здраво. С другой — по работе я довольно активно использую проброс X-окон... В OpenBSD он, конечно, появится, вопрос лишь — когда.

Как вы относитесь к flatpak и прочим snap-aм?

Я понимаю, зачем они нужны, но по моему скромному мнению они, во-первых, вредят open source (уменьшается стимул участвовать в работе на девелоперской веткой кода), а во-вторых, провоцируют халтурный подход к организации инфраструктуры. Это примерно как «умные лампочки»: на словах прикольно, а в реальности — куча внезапных проблем.

Как вам вообще OpenBSD на desktop? ЗАЧЕМ она нужна там, ведь есть Linux-системы, более ориентированные для desktop?

Нормально она на desktop. Программы есть и работают, даже какие-то игры есть и работают. Steam нет, это да. И бинарных драйверов от NVIDIA нет. И Wine.

Я не соглашусь со словами об «ориентированности». OpenBSD так же как и многие дистрибутивы GNU/Linux является ОС общего назначения. «Заточенность под десктоп» — это очень общие слова, так как этот самый «десктоп» может быть сильно разным. Какие-то задачи лучше решаются с помощью того или иного дистрибутива GNU/Linux, какие-то — с помощью OpenBSD, какие-то — с помощью Windows.

На своей основной работе я вначале поднимал местные сервисы на CentOS. А потом, устав от войны с гиперусложнённой системой, потихоньку перетащил всё на OpenBSD. Сбоев стало меньше, времени на обслуживание я тоже трачу меньше, инфраструктура более единообразная — profit как он есть.

Мою систему проще обслуживать, обновления куда более управляемые, файловая система, опять же, не сыпется... :)

Почему лично вы вот пользуетесь и поддерживаете KDE для OpenBSD?

KDE изначально я просто пользовался. Когда я только приходил в мир Unix, именно с этой средой я подружился. А потом появился KDE4, а в OpenBSD его всё не было и не было. Я и начал сам. :) Точнее, подхватил эстафетную палочку у Марка Эспи (Marc Espie). Если честно, зная, сколько усилий и проблем придётся преодолевать, я бы, может, и не стал браться за это дело... Но что есть, то есть.

В каких сферах можно применить openbsd?

Я бы скорее сформулировал вопрос наоборот, так как оригинальный дать в меру краткий ответ невозможно: «В каких сферах нельзя применять OpenBSD?»

Прежде всего это сферы, где нужна RTOS, конечно. Туда же идёт совсем мелкая эмбедовка — условно, меньше мегабайта ПЗУ.

В каком состоянии поддержка железа в OpenBSD?

В целом неплохо. Нет Bluetooth (был, но выпилили, так как оказался никому не нужным настолько, чтобы нормально поддерживать) и FireWire. Нет поддержки фирменных технологий NVIDIA, так как нет бинарных драйверов. Какие-нибудь фирменные мелочи на разных ноутбуках могут не поддерживаться, но поскольку я по жизни пользуюсь ThinkPad'ами, то подробнее сказать не могу.

Зато очень хорошо работает звук (OpenBSD реально может гордиться sndio), ну и неплохой сетевой стек. :)

Systemd в openbsd не появится? Что вы думаете об этом системном менеджере?

Нет, но в портах вроде как были какие-то заглушки для сборки ПО.

Systemd решает ряд задач, которые действительно требуют кардинально нового подхода. Например, проблемы журналирования при запуске и выключении ОС. Однако реализация в целом вызывает лёгкую оторопь. А, главное, инструмент, который призван решать проблемы, создаёт их не меньше, да ещё сильно ограничивает в некоторых возможностях — по-моему, это неправильно. Одни только бинарные журналы чего стоят...

Плохи ли вообще комбайны и в каких ситуациях?

Иногда пользователю нужен комбайн, и тут ничего не поделаешь. Всё как обычно: разные потребности — разные решения.

Современные браузеры — те ещё комбайны. Но пути обратно в Web 1.0 нет. Это может нравиться, может не нравиться, но от этого никуда не денешься, и нужно стараться хотя бы как-то управлять этими процессами, вот и всё.

Сколько времени уходит на создание одного порта? Это сложно?

Смотря какое ПО. Порт для какого-нибудь Ruby gem делается за несколько минут. Ну а порт Qt WebEngine съел у меня лично уже с неделю чистого времени.

Есть некоторый минимум знаний: прежде всего, bsd.port.mk(5), pkg_add(1), pkg_create(1) и Porter's Handbook: http://www.openbsd.org/faq/ports/ . Для портов, которые устанавливают системные службы, нужно ещё владеть rcctl(8) и rc.subr(8). А перед этим всем, конечно, нужно в целом понимать, что как устроено в системе, для чего есть общий FAQ http://www.openbsd.org/faq/ и свободно доступная книга «Absolute OpenBSD».

Как стать мейнтейнером?

А оно вам действительно надо? :) Это ведь в первую очередь ответственность, а не привилегия.

Прежде всего, нужно или сделать новый хороший порт, или взять под своё крыло бесхозный имеющийся — в любом случае это делается через список рассылки ports@openbsd.org . Добиваться обратной связи, не бояться быть настойчивым. Получив обратную связь — слушать внимательно и выполнять рекомендации.

Если работа над портом идёт медленно — имеет смысл закидывать pull request в особый репозиторий openbsd-wip на GitHub: https://github.com/jasperla/openbsd-wip/ . Например, именно там вначале часто появляются новые версии портов KDE.

Как со Skype или его аналогами (tox, etc…) в OpenBSD?

Со Skype всё плохо: Web-морда работает только с сообщениями, а родного клиента, конечно, нет.

Что же до аналогов — что-то есть в портах, что-то — в openbsd-wip (тот же tox), остальное надо собирать. Главной проблемой в последнем случае может стать завязка на ALSA — в этом случае обычно можно попросить помощи у Alexander Ratchov в написании sndio-бекэнда. Это обычно дело несложное, если есть хотя бы какой-то навык в языке Си.

По официальным портам можно искать с помощью стороннего сервиса: http://openports.se/search.php . А в самой системе есть пакет sqlports (БД SQLite с индексом портов по разным признакам), есть "make search" в дереве портов и есть pkg_locatedb, которая есть обёртка над обычным locate с базой по всем файлам, которые устанавливаются тем или иным официальным пакетом.

Какой ваш любимый стиль (императивное, ООП или Функциональное программирование) и язык программирования?

Для функциональщины моих скромных мозгов не хватает. :) А если серьёзнее, в сфере моих интересов просто-напросто правят бал императивные языки.

Мой любимый язык программирования — C#. Без шуток, именно как язык он мне очень нравится. Но пользуюсь всё же больше C и C++, реже — Perl, а в последние годы под долгу службы часто что-то делаю на Java (которую толком не знаю, но спасает знание C++ и C# :) ).

В контексте последних эпидемий с закладками: как часто проводится аудит кода проверка статическими анализаторами и как поставлены прочие вопросы доверию к коду OpenBSD?

Прежде всего, конечно, код проходит реальный аудит перед коммитом. Разве что в дереве портов допускаются некоторые вольности, но и там любой новый порт должен перед импортом получить okay от кого-либо из опытных мейнтейнеров. Люди, пренебрегающие данными правилами, просто-напросто лишаются прав коммиттера, прецеденты бывали.

А кому вы больше доверяете: разработчикам OpenBSD или авторам статических анализаторов? ;) На самом деле, если для вас действительно важен этот вопрос, то не полагайтесь ни на кого — возьмите свой любимый статический анализатор и пройдитесь по коду.

Из последнего — в связи с переездом на clang (буквально в эти часы, как я пишу данный ответ, идёт подготовка к переключению x86-платформ на сборку clang'ом) был очередной проход по коду всей базовой системы с clang static analyzer. Критических ошибок выявлено не было.

И да, Пользователь ЛОРа commagray просит вас (или других разработчиков) создать и добавить в основное дерево порты qt5-webkit-ng и qt5ct+lxappearance. Что вы ему ответите?

Насколько я понимаю, qt5-webkit-ng не был слишком переделан по сравнению с оригинальным, так что его портирование будет не таким сложным. Правда, если смотреть на ChangeLog, то проект как будто загибается: https://github.com/annulen/webkit/blob/qtwebkit-stable/ChangeLog . Всё-таки будущее, похоже, за Qt WebEngine, так что пока что я буду свои усилия концентрировать на нём. Однако, если кто-то всерьёз хочет qt5-webkit-ng, то я готов помочь — объяснить, показать, сделать ревью.

Насчёт Qt5Ct и LXappearance — можно сделать... Напишите мне на следующей неделе (в начале августа), когда основная буря с clang'ом немного утихнет. Сейчас практически все основные мейнтейнеры заняты этим процессом — думаю, понятно, что смена системного компилятора на основной платформе требует много усилий, и даже если я готов потратить полчаса своего времени на это дело, я не готов сейчас отрывать кого-то ещё для проведения аудита.

В заключение скажу: вы там держитесь, всего хорошего и спасибо за рыбу! :)