- BrainTools - https://www.braintools.ru -
На одной истории с OpenBSD и Вячеславом Воронц��вым [1] мы конечно же не остановились, на этот раз в гостях у нас ещё один яркий и интересный представитель сообщества BSD.

Рассказ пойдет о системе NetBSD, потому что у нас в гостях Алексей Чеусов — самый настоящий разработчик NetBSD.
Выкладываем видео как обычно везде где только можно, сам ролик:
На других платформах: Youtube [2], Rutube [3].
Ниже вас ждет текстовая версия интервью с Алексеем в литературной обработке, это не дословный перевод всех реплик из видео.
По той простой причине, что мы «художественных ПТУ» не оканчивали и общаемся в жизни далеко не на литературном русском.
Как и в прошлый раз, ради большей эпичности будем использовать наши ники в сети для выделения реплик:
laizoaarz — Алексей Чеусов, гость
alex0×08 — Александр Чернышев, ведущий
Собственно как автора так и гостя можно легко найти, вбив ник в любую поисковую систему. Поехали.

Алексей — программист-математик с большим опытом [4], работающий с NetBSD с 2006 года, действующий ментейнер в нескольких крупных открытых проектах, отвечающий за большое количество пакетов в pkgsrc.
Почта: cheusov@netbsd.org [5]
Телеграм: @convs_prog
Github: https://github.com/~cheusov
Youtube: https://www.youtube.com/@convs_prog
[6]Блог: dzen.ru/convs_proghttps://dzen.ru/convs_prog [7]
laizoaarz
Всем привет. Это я.
alex0x08
Если видели прошлые ролики, думаю догадываетесь что будет дальше:
я буду снова задавать дурацкие и обывательские вопросы, Алексей будет давать умные комментарии и ответы.
Мы кстати идём по историческому центру Санкт-Петербурга и помимо умного разговора о высоком, вы еще увидите офигительно красивую картинку (в ролике).
С погодой нам тоже сегодня сильно повезло, так что сейчас будет круто и красиво.
laizoaarz
Зовут меня Алексей Чеусов. Занимаюсь программированием с детства, зарабатываю этим примерно с девяносто шестого (1996).
Люблю, знаете ли, железки поковырять.
Математику [8] люблю, юниксы люблю.
alex0x08
Алексей на самом деле скромничает, потому что он фактически самый настоящий математик, учёный. Закончил профильный математический ВУЗ и собственно говоря по основной работе занимается математикой.
При этом является активным коммитером NetBSD [9], у него есть специальная почта в домене netbsd.org.
Еще Алексей активно выступает на конференциях с докладами как по математическим темам, так и по BSD-шным.
Короче, это весьма известный, опытный и интересный человек.
Когда мы делали ролик про OpenBSD [11], я там говорил «ваш шанс встретить живого пользователя OpenBSD на улице примерно равен шансу встретиться с космонавтом».
Так вот с NetBSD всё ещё круче, поскольку это еще более редкая система.
laizoaarz
Ну да, я сам из Минска, из Беларуси. И в моём окружении, честно сказать, никто NetBSD не использует. OpenBSD встречается в наших кругах куда чаще.
Я в последнее время жил в Кутаиси и на одной тусовке местных экспатов встретил пользователя OpenBSD. Это было очень неожиданно. Мы с ним тут же, за игрой в настольные игры поспорили, какая из BSD лучше.
Было весело и забавно:
мало того, что мы BSD-шники, так ещё и встретились в узком кругу экспатов в Грузии.

alex0x08
Расскажи, почему именно NetBSD?
laizoaarz
Как часто бывает, это случайность [13] :)
Гостил у своих приятелей из Sam Solutions [14] — компания в Минске, где до сих пор существует отдел UNIX-разработки. Хотя сейчас уже Linux-разработки, в основном.
Увидел у них болванки — FreeBSD, NetBSD, OpenBSD.
Ну и попробовал все, по очереди.
Начав с FreeBSD, которая у меня.. упала и развалилась. Причём неоднократно, так что с ней у меня не задалось.

laizoaarz
Это была пятая версия, 5.3.
После чего поставил NetBSD 2.02. Как сейчас помню, это был 2006 год. К тому моменту я уже был знаком с Линуксом много лет.
Так что NetBSD — моя вторая Unix-подобная система.
Первый был Linux Suse 6.1.
laizoaarz
И с NetBSD как-то у меня пошло.
Пошло во-первых, по технической части.
Она мне понравилась, всё заработало, всё было очень просто и понятно. NetBSD какая-то такая.. стабильная оказалась.
Дальше пошло общение с людьми, с разработчиками:
Thomas Klausner [15], Christos Zoulas [16], Alistair Crooks [17], David Holland [18].
Все эти ведущие разработчики NetBSD, с которыми пересекался, с ними пошло нормальное общение.
И я как-то увлёкся этим делом.
Ну и «прилип» не только к технике, но и к этим всем людям, которые показались очень интересными.

alex0x08
Когда готовился к этому ролику и начал собирать материал, оказалось что сообщество NetBSD — гораздо более.. демократично устроено, нежели другие, более известные и популярные из BSD.
Например, каждый коммитер может выкладывать патчи для любого пакета.
Расскажи как вообще у вас сообщество устроено, в чём отличие от «кровавого диктата» Тео [19] в OpenBSD?

laizoaarz
Одна из причин, почему я не использую OpenBSD и считаю эту систему непригодной для жизни, это откровенный «фюризм».
OpenBSD это система одного человека, как он сказал, так и будет.
А в NetBSD всё устроено совсем по-другому.
Там есть Core Team [20], который принимает взвешенные решения по спорным вопросам. Cостоит, насколько помню из семи человек.
laizoaarz
И в случае возникновения каких-то непримиримых споров, все решается коллегиально. Туда кстати входил в прошлом и Валерий Ушаков [21] из Питера, ваш местный товарищ.
Состав Core Team меняется и соответственно меняются поколения разработчиков.
В общем, как-то так всё происходит, более плавно.
Никто не уходит обиженным, в отличие от других экосистем, где всё устроено несколько по-другому.
В NetBSD все сильно лучше в этом плане. Но тотальной «демократии» здесь совершенно точно нет, всё гораздо интереснее.
alex0x08
В FreeBSD на самом деле тоже есть Core Team [22], больше размером, человек 15. Но в любом случае там нет такого, что любой коммитер может отправлять патчи в любую часть системы или набора пакетов.
laizoaarz
Приведу пример.
Если мы проанализируем самых популярных менте��неров пакетов в pkgsrc [23], увидим там почтовый адрес @pkgsrc-users [24]:

laizoaarz
Это отнюдь не означает, что пакет бесхозный.
Это означает, что человек создал пакет, добавил в базу, но не берёт на себя труд по сопровождению этого пакета, по его поддержке.
Пакет принадлежит как бы всем.
И любой человек, с оглядкой на сообщество, на этот список рассылки @pkgsrc-users, может сюда коммитить.
Все это приводит к тому, что откровенно бесхозных пакетов нет.
И получается, что пакеты движутся вперёд более активно, чем если бы один человек уснул или там, не знаю, нарожал детей, ушёл в запой а пакет стоит без движения, без апдейтов все это время.
alex0x08
На самом деле, «не ушёл и не нарожал детей», чаще всего просто времени не хватает на все это у людей.
Самая частая причина, что просто сильный завал по работе и все — ребят, извините, не тяну.
По крайней мере во FreeBSD это самая частая причина, по которой у пакетов меняются ментейнеры. Точно не «идейные разногласия».

alex0x08
Сейчас мы развеем наверное самую известную байку про NetBSD — насчёт её реальной кроссплатформенности.
Расскажи эту историю про NetBSD на тостере [25]:
Yesterday at LinuxWorld 2005 I ran into Jake Appelbaum [26] and he mentioned that upstairs in up the .org Pavilion there was a toaster that was powered by NetBSD [27] (the first open source version BSD, a Unix-like operating system). John Mc [28] and I went up there and found the candy apple red toaster that was being controlled by NetBSD, and it actually made toast.
Очень известная история, ставшая для обывателей визитной карточкой NetBSD.
laizoaarz
Думаю эта байка повторяется каждое десятилетие. И по-моему это какая-то глупость, которую стоит перестать повторять [29].
Если подходить к вопросу объективно, то все операционки стремятся быть перенесёнными на всё что движется.
NetBSD естественно это тоже касается, но это не означает что она лидер в данной области. Лидером по портируемости является Linux и уже очень давно.
И если уж мы выбираем операционную систему, то на мой взгляд совершенно не по этой причине. Я например выбрал NetBSD совершенно по другим причинам. Точно не потому, что она якобы такая переносимая.

alex0x08
История с количеством поддерживаемых архитектур.
Насколько понимаю, всё не настолько глобально как кажется обывателю? Из огромной массы поддерживаемых архитектур [30] только примерно половина — активные, остальные просто есть в списке.
laizoaarz
Ну да.
В NetBSD есть три категории поддерживаемые систем:
Tier I поддерживается активно, туда входит ясное дело x86, ARM, MIPS.
Вторая категория — всякие устаревшие SPARC, Alpha и PowerPC.
И третья категория, то что вероятнее всего отвалится. Не потому что эти архитектуры не нужны, а просто потому что это некому поддерживать.
Что касается целесообразности поддержки всяких Sony PlayStation 2 [34] и прочей экзотики, то как-то в рассылке видел забавный аргумент, когда разработчики обсуждали, нужно ли им поддерживать старый хлам.
Один из разработчиков NetBSD выдвинул следующий аргумент:
нам не столько нужен этот условный Sony PlayStation 2.0, сколько факт, что на нем все тоже работает.
А если это не так, значит мы сделали что-то неправильно.
Так что поддержка большого количества архитектур, при условии работоспособности, однозначно доказывает, что с точки зрения [35] дизайна операционной системы всё сделано верно.
И вот для этого портируемость очень важна и очень нужна.

alex0x08
От себя добавлю, что в NetBSD очень интересный подход к поддержке железа. Фактически там нет концепции драйвера устройства, но есть «фреймворк» для их создания, внутренний.
И когда создается код для поддержки конечного устройства, он пишется так чтобы его можно было применять на разных архитектурах.
laizoaarz
Ну да, это упрощает поддержку железа на разных архитектурах.
alex0x08
Но ооочень сильно усложняет саму разработку, потому что когда попытался что-то портировать из FreeBSD — концов просто не нашёл.
alex0x08
Поскольку Алексей в основном занимается поддержкой пакетов, он — ментейнер очень большого их количества в pkgsrc, про пакетную базу может рассказать много чего интересного.
Давай начнём с достаточно известного факта:
пакетная база pkgsrc [23] на самом деле кроссплатформенная и все пакеты собираются под кучей разных систем.
Расскажи как это все происходит.
laizoaarz
Тут сразу ошибка [36] в описании:
пакеты не для NetBSD, пакеты для проекта pkgsrc.
NetBSD тут лишь одна из целевых платформ для сборки пакетов, с поддержкой разных архитектур.
А у самого проекта pkgsrc одна из главных целей — поддержка разных операционных систем. Поэтому если создал пакет один раз, сборка потом работает [37] и под Линуксом и под MacOS, и под Solaris и под Minix и так далее — под «всем что движется».
И это на самом деле работает, это ключевой момент.
Этим проект pkgsrc радикально отличается от всех остальных пакетных систем, знакомых юниксоидам.

laizoaarz
Ну и вторая фича pkgsrc, которая мне кажется очень важной:
все пакеты можно устанавливать в домашний каталог.
Это так называемый unprivileged-режим [38], непривилегированный режим.
Для примера, опишу один кейс.
У меня есть много своих разработок, которые приходится тестировать на разных аппаратных архитектурах и разных операционных системах.
Тестирую я все это на большом количестве систем, куда у меня есть удаленный SSH-доступ, но без привилегий суперпользователя.
Для тестирования нужен какой-то набор софта на целевой машине, а поскольку нет прав суперпользователя — не могу установить все необходимое из родных для целевой системы пакетных систем.
Так что я устанавливаю все необходимое из pkgsrc в домашний каталог, никого при этом не дёргая по поводу доступа.
Удобно.
alex0x08
Расскажи про свою рабочую систему, ведь на самом деле ты — очень редкий вид пользователя, поскольку у тебя NetBSD используется непосредственно на рабочей станции, в качестве основной ОС.
Что из софта используешь, как это вообще выглядит?
Emacs [39] наверное какой-нибудь?
laizoaarz
Ну я «админ локалхоста», но очень опытный.
А в целом, я — разработчик и больше занимаюсь программированием. Ну как больше, я 100% времени занимаюсь программированием, а не администрирую что-либо.
Поэтому да, у меня NetBSD на десктопе, одна из систем.
В основном у меня там используется Emacs, urxvt [40] — форк rxvt с поддержкой Unicode и довольно древний window-менеджер ctvm [41], который меня вполне устраивает.
Вообще считаю:
для разработчика window-менеджер или так называемый «desktop environment» никак не улучшает производительность.
Поэтому хватает столь древнего window-менеджера, который недавно в NetBSD сделали устанавливаемым по-умолчанию, внеся его в базовую систему.
Пользуюсь им наверное с начала двухтысячных годов.

alex0x08
Насколько знаю, ты часто отправляешь патчи для разных открытых проектов, в том числе для awk. Из-за чего у тебя случилась интересная история с Брайаном Керниганом.
Когда про это услышал — очень сильно удивился.
Расскажи, хотя-бы в кратце.
laizoaarz
Если вкратце, то я очень много в свое время писал на awk [42]. Напомню, awk — такой язык программирования, хотя и примитивный, но весьма могучий.
Я awk люблю особенно нежно и очень давно.
Ну и когда писал на нём очень активно, сталкивался с проблемами в реализации для NetBSD, что реализация не соответствует POSIX.То тут, то там.
Или просто какой-то баг присутствует.
Я этих багов накопил штук 13, ну и зная что в NetBSD используется реализация Брайна Кернигана, написал непосредственно в upstream — самому Кернигану письмо:
дяденька, поправьте пожалуйста вот тут, поправьте вот там, тут у вас баг.
Ответ от него был довольно забавный, в стиле:
Мальчик, иди отсюда. Это не баги. Моя книга была написана до этого вашего POSIX, поэтому это не баги, это фичи!
Вот такая весёлая история.
Зато в NetBSD все эти замечания приняли и внесли исправления. В целом awk был очень сильно поправлен в NetBSD благодаря моим багрепортам.
alex0x08
Ребят, если кто не в курсе, я сюда вставлю ссылки, кто такой этот Брайан Керниган [43].
Вы очень сильно удивитесь.
laizoaarz
Это очень хороший и известный дядька, конечно же.
Я учился по его книгам. Но оказался в жизни немножко злобным, хотя это и неудивительно.

alex0x08
Собственно, это один из авторов языка Си, один из авторов UNIX. Фактически исторический персонаж, по уровню события — как если бы вам ответил лично Билл Гейтс.
laizoaarz
Ну типа того, да.
alex0x08
У тебя есть ещё интересные проекты, например mk-configure [44].
Расскажи?
laizoaarz
Есть такой, да. Система сборки.
В своё время меня достал «autoshit» так называемый, или «autobloat», в миру autotools [45].
Достал тем, что крайне неудобен в использовании. Да и честно говоря, «overengineering» там откровенный, между нами и девочками.
Я решил, что в принципе против кодогенерации в проектах подобного рода. Это там не к месту, как мне кажется.
Ну и решил, что вариация make из NetBSD — bmake [46] вполне пригодна для того, чтобы реализовать аналогичный функционал.
Например проверку на существование в системе какой-то функции.

alex0x08
Сделаем запись на фоне этого замечательного места, на память [47].
Историческое место:
Храм Воскресения Христова на крови́ (Спа́с на Крови́) — православный храм [48]–памятник [49] в Санкт-Петербурге [50], сооружённый на месте, где 1 марта 1881 года в результате покушения [51] был смертельно ранен император Александр II [52] (выражение на крови указывает на кровь царя).
…
alex0x08
Немного прерву Алексея, чтобы вы понимали контекст.
Autotools — самая глубокая, самая большая жопа, связанная со сборкой проектов со времён создания языка C.
laizoaarz
Не преувеличивай, autotools появился чуть позже.
alex0x08
Ну хорошо, с начала девяностых.
В общем это самая грязная, самая вонючая куча говна, с которой все бегут.
Если вы сделали сборку проекта на этой штуке в 21м веке — гореть вам в аду, что тут скажешь.
Вот этот человек (кивает на Алексея) настолько крут, что попытался создать заменяемый аналог autotools.
laizoaarz
Да, он рабочий на самом деле. Ещё чуть-чуть добавлю для обывателей.
autotools нужен для того, чтобы сделать проект переносимым на разные платформы — на Solaris, AX, *BSD, на линукс и так далее.
Для того, чтобы сделать приложение на С или С++ портабельным, очень часто возникает необходимость проверки на то, есть ли в системе нужная системная функция и в случае если нет — подставить собственную реализацию.
mk-configureэто проект, который это же реализует, но при этом гораздо проще и меньше по объёму чемautotools.
Построен на базе make из NetBSD (bmake), который сильно отличается от более известного GNU Make [53].
laizoaarz
Но bmake мне нравится больше.
Кстати bmake недавно добавили во FreeBSD [54] и в DragonflyBSD [55].
Так что из NetBSD тоже время от времени что-то растаскивают по другим проектам.
alex0x08
Третья система сборки..
В FreeBSD и так уже свой вариант make, это получается ещё один.
laizoaarz
Если сравнивать make из NetBSD, OpenBSD и FreeBSD — тот, который был раньше, то честно говоря, вариации make из OpenBSD и FreeBSD вообще ни о чём.
Ими нельзя пользоваться.
Ну прямо совсем неинтересно. bmake значительно богаче по своим возможностям.
Вот такие страшные дела.

alex0x08
А какие фишки именно NetBSD ты чаще всего используешь? Что из нового есть интересное?
laizoaarz
Ну например в десятую версию добавили nvmm [56].
Это штуковина, которая позволяет запускать виртуальные машины без существенной потери производительности.
Гипервизор уровня ядра, вроде KVM в линуксе.
В десятке это наиболее значительная вещь, как мне кажется.
Из нового.
А в целом я её использую, потому что она няшная.
Садишься за FreeBSD и руки трясутся от того, что что-нибудь сейчас развалится. Файловая система полетит или что-нибудь выдаст Segmentation Fault. Садишься за какой-нибудь Solaris [57] и думаешь:
Боже, какое убожество.
alex0x08
Хочешь сказать, у тебя и Солярис ещё остался?
laizoaarz
Ну я по ssh к нему захожу и тестирую свои разработки на Solaris, в том числе. SSH-доступ у меня есть на десятку, на девятку и на одиннадцатую версию.
alex0x08
А это какой именно Solaris? Современный или что-то историческое?
laizoaarz
Есть 10й и 11й на SPARC, это уже Oracle Solaris. Еще есть доступ к Illumos — вчерашний OpenSolaris.
Тестирую на всём, да.
laizoaarz
Поддержка портабельности это то что стараюсь делать и в своих личных проектах тоже.
Для меня слово «Unix» значит гораздо больше, чем слово «Linux» для некоторых.
Поэтому все что я делаю, переносимо вплоть до Соляриса, десятого точно.
До портирования на AIX [58] ещё не дошел, есть SSH на такую систему, изучаю особенности системы.
alex0x08
Это очень специфичные системы, которые находятся в режиме глубокого сопровождения, если и выпускаются патчи, то только патчи безопасности.
Как-то так.
laizoaarz
А точно не развивается вообще?
alex0x08
Насколько мне известно нет.
Остатки разработки как HP-UX так и AIX перенесли в Индию. И сейчас все это находится в режиме сопровождения.
laizoaarz
Ну это дорогущие коммерческие системы, коммерческие юниксы, что с ними будет дальше — не знаю.

alex0x08
Допустим, кто-то сейчас захочет использовать NetBSD — что ему делать? Как во всю эту историю входить?
laizoaarz
Ну для начала смириться, что NetBSD это не Linux.
Если вы привыкли в линуксе к чему-то, то вам придётся признать, что BSD — любая BSD и NetBSD в частности это не Linux.
Там всё по-другому, абсолютно всё.
Например, там нет вашего любимого systemd. Привыкайте к тому, что его там нет и не будет никогда. Надеюсь.
alex0x08
Там куда более лютая система.
laizoaarz
В NetBSD в 2000м году придумали rc.d. [59]
До этого был просто rc или rc.local, куда руками вписывался запуск необходимых демонов в нужном тебе порядке. Так вот, в NetBSD сделали rc.d, который тогда же, примерно в начале двухтысячных годов перенесли в FreeBSD.
Так что фрибздшная система скриптов запуска взята изначально из NetBSD. По-моему, используется там до сих пор.
Она намного проще, чем допустим система скриптов запуска в Линуксе и в Солярисе. И на мой взгляд намного приятнее.
Если бы был адептом Линукса, я бы туда
rc.dвтащил и был бы счастлив.
alex0x08
На самом деле существуют дистрибутивы с таким rc, вроде Slackware Linux использует такую систему скриптов.
alex0x08
Ну от systemd честно говоря сам не в восторге, зато вам в NetBSD втащили DBus не так давно. Я его там точно видел.
laizoaarz
Ну, меня он пока не беспокоит, честно говоря.
alex0x08
Ну а как USB-диски подключать? Или ты вручную монтируешь?
laizoaarz
Я всю вручную монтирую, я старпёр, извините.
alex0x08
Всё понятно.
Ну в FreeBSD это всё живёт уже очень давно. Там, слава богу, от HAL (Hardware Abstraction Layer) избавились, оставили только DBus.
laizoaarz
Честно сказать, флешками вообще практически не пользуюсь. При наличии интернета зачем таскать что-то на флешках?
Какие-то физические устройства и на них что-то записывают — я этого не очень понимаю.
То есть у меня проблемы такой нету.

alex0x08
Насколько понимаю, набор языков программирования, которые ты используешь — очень и очень большой. Расскажи подрастающему поколению.
laizoaarz
В разное время я писал на разном.
Начинал с Pascal. Если взять совсем с детства, то начинал с Focal, BASIC и машинных кодов.
Уже потом, в университете, писал на Паскале. Первая работа на госконтору была на Turbo Pascal 7.0, от Borland. Потом C, C++, всякие скрипты, awk, шелл-скрипты, Ruby, Java, Коtlin.
Самый няшный из перечисленного — Kotlin.
Вот такой странный набор.
alex0x08
Спрашивал Алек��ея заранее насчёт Scala. Как-то так получилось, что Scala при всем этом он обошел стороной. Удивительно!
laizoaarz
Я не люблю функциональщину, честно говоря. Она нерабочая.
Все эти Haskell, они конечно применимы в узких нишах, но для реального использования это всё не годится.
Как-то так сложилось, что я сталкиваюсь с задачами, требовательными к производительности и не могу защищать диссертации по алгоритмам, изобретённым в шестидесятые, пытаясь «натянуть уже на ежа».
Я не буду делать функциональщину там, где мне давно известен императивный алгоритм.
Не буду это делать, поскольку меня просто уволят за такое, если если вдруг не справлюсь.

alex0x08
Кстати, а Kotlin и NetBSD у тебя получается сочетать? Работать с Kotlin непосредственно в NetBSD?
laizoaarz
Вот кстати нет.
Для разработки на Kotlin использую Linux. Не потому что это невозможно в принципе, а потому что просто слишком сложно и долго компилировать среду разработки Intellij Idea для NetBSD.
alex0x08
А я это сделал! Есть сборка Intellij Idea, которая прям работает на NetBSD.
На момент написания текстовой версии, шла работа по сборке Kotlin на FreeBSD — будет в отдельной статье.
laizoaarz
Надо мне это тоже сделать и запакетировать Kotlin наконец.
laizoaarz
С линуксом я знаком намного дольше чем с NetBSD и являюсь давним пользователем Alt Linux тоже.
В него я тоже коммичу, на уровне пакетов.
alex0x08
Опыт, получается — глобальный.
Коль у тебя такой глобальный опыт в качестве коммитера, расскажи как вообще это происходит? Потому что например у меня часто не получается договориться.
Есть много своих наработок, которые хочется людям выдать, но постоянно что-то мешает. Где-то это сложная регуляция, где-то просто людям пишешь, а они не отвечают.
Как у тебя коммуникация выстраивается?
laizoaarz
Расскажу одну интересную историю.
Есть один проект, называется Heirloom [60].
Это набор утилит, написанный компанией Caldera давным-давно, на рубеже веков.
И это один из проектов, который я пакетировал в pkgsrc. Ну и пока я его пакетировал, естественно возникли вопросы к сборке.
Как уже было сказано, pkgsrc это система кроссплатформенная и собирается на всём. И среди операционных систем, в которых я был заинтересован, была такая система как Interix [61].
Это такой древний предок WSL, подсистема Unix для Windows.
laizoaarz
И вот этот самый Heirloom под Interix не собирался. Я поправил, прислал патчи автору и говорю:
Слушай, приложи вот эти штуки. Мне для Interix нужно, чтобы оно собиралось.
Он мне отвечает:
I don’t support Windows. До свидания.
Так что взаимодействие бывает и таким, причем регулярно.
Еще часто сталкиваюсь с линуксоидами, которые не заинтересованы в поддержке чего-либо кроме Линукса.
Такие в последнее время встречаются, в целом этот процесс с патчами — долгий и болезненный. Но если умеешь с буржуями общаться, если достаточно вежлив — всё получается, так или иначе.
alex0x08
Короче, если выдаёте патч для известной системы, который исправляет важную проблему — его примут, с большой радостью и охотой.
А если нет, то нет ;)
laizoaarz
Да, это занимает много времени и может кому-то не нравиться. Айтишники многие не очень-то любят общаться в принципе.
Поэтому взаимодействовать с людьми, если хочешь что-то добиться, нужно этому учиться. Иногда приходится блин и поуговаривать кого-то.
Не без этого.
laizoaarz
Еще из интересного. Есть контора называется Joyent [62], которая взялась в своё время сделать поддержку pkgsrc для Illumos [63] (форк OpenSolaris).
И они таки её сделали.
Представляете, под Solaris поддерживается
pkgsrcна таком же высоком уровне как и для NetBSD.
В пакетах под Illumos компилируется чуть меньше, чем под NetBSD.
laizoaarz
Когда-то проект DragonflyBSD [64] был на на развилке в выборе пакетной системы, они отказались на тот момент (лет 10 тому назад) от системы портов из FreeBSD.
Они пришли в NetBSD и один разработчик — Jorg Sonnenberger [65] из NetBSD Community в одиночку, примерно за год обеспечил поддержку pkgsrc на DragonflyBSD, причем на очень высоком уровне.
Под Dragonfly pkgsrc собирал больше пакетов, чем под NetBSD.
Так что комьюнити pkgsrc заинтересовано в портируемости всех своих пакетов на все возможные операционки.
Но есть одна сложность:
человек, пишущий патчи, должен разбираться и в Solaris и в OpenBSD, и в линуксе и делать патч таким образом, чтобы ничего не сломать.
Это сложный процесс, но коммьюнити, которое бережно к этому относится уже сформировалось. Так что приходите.
alex0x08
А количество пакетов, пакетная база — сколько примерно?
laizoaarz
Точно не скажу, но их намного больше, чем в OpenBSD, хотя конечно меньше, чем в портах FreeBSD.
laizoaarz
Есть в pkgsrc точка вхождения, называется WIP [66].
WIP — сокращение от «Work In Progress», т. е. «находится в разработке».
Куда может прийти любой человек.
Уметь коммитить для этого совершенно не обязательно. И в этом самом WIP есть один ключевой разработчик, которого я уже упомянул — австриец Thomas Klausner [15].
Приходите к нему, заводите аккаунт.
WIP это площадка для всех новичков.
Тут можно поиграться, запакетировать все чего вам не хватает.
Попросите кого-нибудь из разработчиков, например меня, ваш пакет проверить и закоммитить в основную ветку. Если он собирается, то все будет хорошо.
Такая тестовая площадка для всех.
alex0x08
Ещё вопрос.
Про коммерческое.. даже не коммерческое а просто реальное использование NetBSD, какие-то проекты, компании — кто использует?
laizoaarz
Не слежу за этим делом, мне важнее что эта система нравится лично мне и я её использую.
Но некоторое время назад, лет семь или восемь, случайно узнал, что в Витебский Белтелеком в Беларуси заехало какое-то новое сетевое оборудование.
У которого в руководстве было написано, что в качестве управляющей ОС используется NetBSD.
laizoaarz
А что касается pkgsrc, то уже упомянутая компания Joyent [67] использует его как родную пакетную систему для Illumos, который они разворачивают у себя в облаке.
Так что
pkgsrcимеет коммерческое использование, штатные разработчики Joyent довольно активно коммитят.
И они же предоставляют бинарные репозитории pkgsrc для MacOS и для NetBSD.
alex0x08
При этом, насколько понимаю в пакетах pkgsrc есть очень серьёзные штуки, как м��нимум у вас есть gcc и clang, со всей сложной обвязкой.
laizoaarz
Конечно.
Честно говоря вообще не понимаю, зачем так много пакетных систем в мире UNIX.
Ведь запакетировав единожды, хотелось бы пользоваться этим везде — в линуксе, во всех BSD, в MacOS.
И pkgsrc решает эту задачу.
Вкладываться условно в Debian означает, что создав пакет для Debian, в OpenSuse его не будет. И в NetBSD его не будет.
Но раз создав пакет для pkgsrc, можно им пользоваться и в OpenBSD и в NetBSD и в линуксе — где угодно. При желании, разворачиваешь в домашний каталог и используешь.
Очень удобно.
Вложился, так вложился.
alex0x08
На самом деле история с кроссплатформенными пакетами стара как мир. Их пытались делать ещё во времена Unix Wars, когда только-только появлялся открытый софт.
И всё свелось в итоге не к технологиям, а к политике.
Потому что тот, кто контролирует пакеты — создаёт ценность для конечного продукта.
Это не вопрос технологии по большому счёту.
laizoaarz
Ну не знаю. У меня нет проблем с тем, чтобы отслеживать работоспособность моих пакетов на разных ОС.
Сейчас это работает. То есть как бы цель достигнута и всё работает.
alex0x08
Ну а представь какой-нибудь QT так поддерживать? Или Chromium тот же самый, там же чудовищная кодовая база!

laizoaarz
Ну в pkgsrc уже есть много разных пакетов QT, и четвёртый и пятый и шестой. Приходится жить.
Та же самая колбасня с питоном — их поддерживается несколько разных в
pkgsrc, одновременно.
Версии 3.9.1, 3.9.2 и так далее.
alex0x08
Ну хоть не 2.7, уже хорошо.
laizoaarz
2.7 вроде уже выпилили.
И Ruby тоже поддерживается несколько разных версий.
Модули для Python собираются в pkgsrc для различных версий питона. Ну, если кто pip не пользуется или если нужен петон специфичной версии, там 3.1, 3.9, 3.8.
Все это в пакетах, они множатся таким образом.

alex0x08
А кто-то работает с нейросетями, с ML из такого окружения? Из NetBSD?
laizoaarz
Насколько Numpy работает под NetBSD не проверял, потому что не пользуюсь.
alex0x08
А почему Numpy? У Pandas же тоже много чего.
laizoaarz
В Pandas ничего зависимого от операционной системы нет. А вот работает ли Numpy, где есть такие зависимости — вопрос.
Тут есть некоторые вопросы с переносимостью, больное место.
alex0x08
Расскажи эту историю про джуна, который тебя оторвал от свидания с девушкой.
laizoaarz
Сижу с барышней в пятницу вечером. Ужинаем, с вином. Часов 10 вечера.
Звонит коллега:
Лёша, Лёша, я у тебя баг нашёл!
Спрашиваю:
Какой баг?
Вот там-то и то-то.
Говорит:
я уже все починил и выставил в прод..
Начинаю охреневать. Какой прод? Какой баг? Пятница, 10 вечера, я сижу с вином и женщиной. Начинаю задавать наводящие вопросы.
Кастомер жаловался?
Нет.
Ты знаешь, что у меня тесты написаны?
Нет.
То есть ты не протестировал свой фикс?
Нет.
А ты знаешь, что у нас есть staging-сервера, на которых тестирование проходит перед выкатыванием в прод?
Нет, не не знаю.
А ты помнишь, что сегодня пятница, вечер?
Руки убери от системы.
В понедельник вернёмся на работу, починим.
alex0x08
Короче, ты его не убил?
laizoaarz
Нет, я его не убил. Но свои патчи он откатил. Ну и прод восстановил.
Я вернулся в понедельник и спокойно разобрался, что он там нашёл. В результате ошибка была у него и его решение ломало мои тесты. Он принял за баг то, что так и должно быть.
Никакой ошибки не было.
У меня всё было изначально верно, что и отражали тесты, написанные не «на отвали», а по-взрослому.
На большом объёме все было не раз протестировано.
Так что бывает всякое, да,

alex0x08
Эм..
товарищ сержант не может быть не прав во всём.
Как было красиво показано в сериале «Доктор Хаус», где доктор с огромным опытом выдал фразу: «я могу облажаться в деталях, но не могу облажаться во всём».
Тут тоже самое.
С вами был Алексей Чусов, всем привет. Всей BSD-тусовке.
Следующий ролик будет обязательно про FreeBSD, наконец-то я это добью. Всё господа, всем спасибо, всем пока и до новых встреч!
Выражаем благодарность за помощь с созданием ролика:
alexey@proschenko.ru [68]
@easimonenko
@nbuwe
и всему сообществу NetBSD в России:
Автор: alex0x08
Источник [70]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/25540
URLs in this post:
[1] OpenBSD и Вячеславом Воронц��вым: https://habr.com/ru/articles/953884/
[2] Youtube: https://youtu.be/q-YQqdamUNs
[3] Rutube: https://rutube.ru/video/b354d4cc8bfda28c410752f937ee26a3/
[4] опытом: http://www.braintools.ru/article/6952
[5] cheusov@netbsd.org: mailto:cheusov@netbsd.org
[6] https://www.youtube.com/@convs_prog
: https://www.youtube.com/@convs_prog%EF%BF%BC%D0%91%D0%BB%D0%BE%D0%B3
[7] https://dzen.ru/convs_prog: https://dzen.ru/convs_prog
[8] Математику: http://www.braintools.ru/article/7620
[9] коммитером NetBSD: https://www.netbsd.org/people/developers.html
[10] pkgsrc: https://pkgsrc.se/bbmaint.php?maint=cheusov@NetBSD.org
[11] ролик про OpenBSD: https://blog.0x08.ru/openbsd-interview-msk-2025
[12] тут: https://lvee.org/uploads/image_upload/file/260/WRE.pdf
[13] случайность: http://www.braintools.ru/article/6560
[14] Sam Solutions: https://sam-solutions.com/
[15] Thomas Klausner: https://github.com/0-wiz-0
[16] Christos Zoulas: https://blog.netbsd.org/tnf/entry/interview_with_christos_zoulas
[17] Alistair Crooks: https://wiki.netbsd.org/users/agc/
[18] David Holland: https://www.galois.com/team/david-holland
[19] Тео: https://en.wikipedia.org/wiki/Theo_de_Raadt
[20] Core Team: https://www.netbsd.org/people/core.html
[21] Валерий Ушаков: https://github.com/nbuwe
[22] Core Team: https://en.wikipedia.org/wiki/FreeBSD_Core_Team
[23] pkgsrc: https://www.pkgsrc.org/
[24] @pkgsrc-users: https://pkgsrc.se/bbmaint.php?maint=pkgsrc-users@NetBSD.org
[25] NetBSD на тостере: https://github.com/wcd-anon/NetBSD-toaster
[26] Jake Appelbaum: https://twitter.com/ioerror
[27] NetBSD: http://www.netbsd.org/
[28] John Mc: http://www.flickr.com/photos/laughingsquid/33239116/in/set-738298/
[29] повторять: http://www.braintools.ru/article/4012
[30] огромной массы поддерживаемых архитектур: https://www.netbsd.org/ports/
[31] Tier I: Focus — support is part of NetBSD’s strategy: https://www.netbsd.org/ports/#ports-tier1
[32] Tier II: Organic — evolving at its own pace: https://www.netbsd.org/ports/#ports-tier2
[33] Tier III: Life Support — severely incapacitated or broken: https://www.netbsd.org/ports/#ports-tier3
[34] Sony PlayStation 2: https://www.netbsd.org/ports/playstation2/index.html
[35] зрения: http://www.braintools.ru/article/6238
[36] ошибка: http://www.braintools.ru/article/4192
[37] работает: https://netbsd.org/docs/pkgsrc/platforms.html
[38] unprivileged-режим: https://www.netbsd.org/docs/pkgsrc/faq.html#non-root-pkgsrc
[39] Emacs: https://en.wikipedia.org/wiki/Emacs
[40] urxvt: https://wiki.archlinux.org/title/Rxvt-unicode
[41] ctvm: https://en.wikipedia.org/wiki/CTWM
[42] awk: https://en.wikipedia.org/wiki/AWK
[43] Брайан Керниган: https://en.wikipedia.org/wiki/Brian_Kernighan
[44] mk-configure: https://github.com/cheusov/mk-configure
[45] autotools: https://en.wikipedia.org/wiki/GNU_Autotools
[46] bmake: https://www.crufty.net/help/sjg/bmake.html
[47] память: http://www.braintools.ru/article/4140
[48] православный храм: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B2%D0%BE%D1%81%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D0%B9_%D1%85%D1%80%D0%B0%D0%BC
[49] памятник: https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D0%BC%D1%8F%D1%82%D0%BD%D0%B8%D0%BA
[50] Санкт-Петербурге: https://ru.wikipedia.org/wiki/%D0%A1%D0%B0%D0%BD%D0%BA%D1%82-%D0%9F%D0%B5%D1%82%D0%B5%D1%80%D0%B1%D1%83%D1%80%D0%B3
[51] покушения: https://ru.wikipedia.org/wiki/%D0%A3%D0%B1%D0%B8%D0%B9%D1%81%D1%82%D0%B2%D0%BE_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80%D0%B0_II
[52] Александр II: https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80_II
[53] GNU Make: https://www.gnu.org/software/make/
[54] добавили во FreeBSD: https://man.freebsd.org/cgi/man.cgi?query=bmake&sektion=1
[55] DragonflyBSD: https://man.dragonflybsd.org/?command=bmake
[56] nvmm: https://www.netbsd.org/docs/guide/en/chap-virt.html
[57] Solaris: https://en.wikipedia.org/wiki/Oracle_Solaris
[58] AIX: https://en.wikipedia.org/wiki/IBM_AIX
[59] rc.d.: http://mewburn.net/luke/papers/rc.d.pdf
[60] Heirloom: https://heirloom.sourceforge.net/
[61] Interix: https://en.wikipedia.org/wiki/Interix
[62] Joyent: http://www.joyent.com/
[63] Illumos: https://en.wikipedia.org/wiki/Illumos
[64] DragonflyBSD: https://en.wikipedia.org/wiki/DragonFly_BSD
[65] Jorg Sonnenberger: https://github.com/jsonn
[66] WIP: https://pkgsrc.org/wip/
[67] Joyent: https://joyent.com/
[68] alexey@proschenko.ru: mailto:alexey@proschenko.ru
[69] https://t.me/netbsd_ru: https://t.me/netbsd_ru
[70] Источник: https://habr.com/ru/articles/995602/?utm_source=habrahabr&utm_medium=rss&utm_campaign=995602
Нажмите здесь для печати.