Линус Торвальдс в грубой форме отругал разработчика
Основатель платформы Linux в грубой форме отругал разработчика, допустившего возникновение ошибки. Как только разработчики представили пользователям тестовую версию нового ядра Linux 3.8-rc1, на них сразу посыпались жалобы по поводу неполадок в работе PulseAudio.
По мнению главного разработчика подсистемы Мауро Чехаба (Mauro Carvalho Chehab), проблема является следствием возникновения ошибки из-за существования программного кода «-ENOENT» вместо «-EINVAL», а также из-за попыток системы использовать V4L2 функции uvc_ctrl (USB video device), которые предназначены для иных целей (управление видеоустройством, таким как web-камера).
Подобное заявление разработчика взбесило Торвальдса, который в грубой форме попытался объяснить последнему, что то главным правилом разработки ядра является недопустимость нарушения работы компонентов на стороне пользователя. Торвальдс заявил, что если какое-либо изменение в ядре приводит к нарушению функционирования пользовательских программ, оно тут же воспринимается, как ошибка в ядре. Кроме того, создатель платформы напомнил, что код ENOENT не может применяться для управления открытыми файлами, поскольку он применяется при необходимости манипулирования путями и всегда означал отсутствие искомого файла или директории.
Источник:
http://securitylab.ru/
Подробности, если кому интересно:
Как говорится, не ошибается тот, кто ничего не делает. У Торвальдса давно в блоге про одни ныряния. Ну и нырял бы дальше, чего на людей бросаться?
Посмотрим чем ответит Мауро на такое оскорбление. Сильно бить папу Линукса, наверное, не надо, но хотя бы очки разбить стоит, чтобы сильно не зазнавался. ;)
Торвальдс полностью прав. Авторам ПО пользовательского режима не должно быть до разборок, что именно случилось в ядре или библиотеках, и внезапно проявившиеся из-за изменений в ядре ошибки -- это крайне плохо.
Помните случай с Adobe Flash и glibc? Никто не сомневается, что авторы флеша тогда нарушили стандарт языка Си. Но факт остаётся фактом -- изменение в коде библиотеки сломало функциональность прикладного ПО.
Цель любой нормальной ОС включает в себя обеспечить удобную среду для стороннего ПО. А среда, в которой из-за обновления в ядре или вышележащей библиотеке (особенно учитывая то, как их много, и то, что они обновляются не в один день) может помешать работе прикладного ПО, удобной не назвать никак.
И разработчикам любых библиотек стоит в первую очередь помнить об обратной совместимости. Хотите поменять функцию DoSomething? Напишите DoSomethingV2 или DoSomethingEx и пишите новую функциональность в неё -- чтобы разработчикам потом не пришлось мучаться с переписыванием или пересборкой своего софта раз в шесть месяцев.
Если бы такое случилось не в Linux, а в Windows, то соответствующих разработчиков из Microsoft уже давным давно повесили бы. Как минимум на "доску позора".
Просто зае.....хм достали чела своей криворукостью