August 15th, 2020

cat with many words

Весь опенсорс в паре тредов.

Каждый, кто подключал наушники в ubuntu или любом другом дистрибутиве, в какой-то момент задавался вопросом: почему все так херово? Смартфоны, другие операционки - везде все норм, но под линукс ничего не получается. В моем случае это выглядит так. Если под мак можно пользоваться встроенным в наушники микрофоном, и все будет работать, то под линукс переключение на внутренний микрофон приводит к автоматическому переключению на другой профиль, который обеспечивает качество звука уровня телефонного звонка. Чтоб стало еще понятнее, это все происходит не тогда, когда именно начинается звонок, а частенько случайно при подключении наушников.

Начав рыться, я быстро понял, что вообще говоря проблема не с моими наушниками конкретно, а с поддержкой нужных кодеков в pulseaudio. Еще круче, также требовались определенные изменения в ядре. И, на минутку, вопрос затрагивает bluetooth, один стандарт которого тянет на 1000 страниц, и он настолько кудрявый, что одного понимание его работы дорогого стоит.

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

Этот тредик отражает основные проблемы опен-сорса. Если нет корпорации, которая стояла бы за продуктом, то:

  • Разработчики будут работать над тем, что им нравится, а не то, что нужно пользователям
  • Пользователи по инерции будут думать, что им кто-то что-то должен
  • Изменения не будут мерджиться годами
  • У самого популярного проекта может быть близкое к нулю количество мейнтейнеров

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

Если рассматривать обычные продуктовые компании, то у них продукты получаются лучше просто потому что продуктовые люди редко долго покупаются на технические отговорки. Компания платит деньги, чтобы определенный функционал появился, а дальше разработчики всеми способами стараются этот вопрос решить.

Чтобы было понятно, что приведенный пример - не частность, упомяну еще парочку из тех, которые когда-то затрагивали меня. Ветераны помнят, что когда-то, в эпоху mp3 файлов в рунете, во многих из них названия треков записывались в кодировке windows-1251. В винде все отображалось прекрасно, под linux - бито. Почти ко всем клиентам появились патчи с исправлениями - хотя бы настройкой с выбором кодировки, но в большом количестве клиентов эти изменения не принимались, так как по стандарту в тегах должен быть unicode, и ничего больше. И все.

Или вот transmission, например, который отказывается загружать файлы с именами больше определенной длины. В других клиентах/системах работает, но тут авторы говорят, что исправлять нечего, все в порядке, это просто файловая система так устроена.

И вроде бы все происходящее - личное дело людей, поддерживающих эти программы. Им даже никто не платит, в конце концов. Но на самом деле нет, особенно, когда эти программы начинают использоваться как основной компоненты множества дистрибутивов. В результате конечные пользователи сталкиваются с большим количеством плохо работающих программ, и в каждой из них решение проблемы затрагивает несколько компонентов, авторых которых имеют свое мнение и всякое говно мерджить не будут. Если таких людей набирается много (часто достаточно одного), то изменения не попадут в основную ветку и через несколько лет.

И это нормально - в конце концов, этим ребятам никто не платит, чтобы они очень старались или жертвовали чем-то. Но с другой стороны это дает четкий ответ на вопрос, почему определенные системы всегда будут проприетарными - только нормальная продуктовая разработка фуллтайм и за деньги позволяет проталкивать трудные решения и добавлять новый функционал за разумное время.

Стоит отметить, что есть еще и два разных мира открытого ПО с разной идеологией - веб ориентированное по и все, что связано с настольными системами. Об этом в другой раз.