Линус Торвальдс в грубой форме отругал разработчика

Основатель платформы Linux в грубой форме отругал разработчика, допустившего возникновение ошибки. Как только разработчики представили пользователям тестовую версию нового ядра Linux 3.8-rc1, на них сразу посыпались жалобы по поводу неполадок в работе PulseAudio.

По мнению главного разработчика подсистемы Мауро Чехаба (Mauro Carvalho Chehab), проблема является следствием возникновения ошибки из-за существования программного кода «-ENOENT» вместо «-EINVAL», а также из-за попыток системы использовать V4L2 функции uvc_ctrl (USB video device), которые предназначены для иных целей (управление видеоустройством, таким как web-камера).

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

Пока без оценки
pomodor

Подробности, если кому интересно:

From  Linus Torvalds <>
Date    Sun, 23 Dec 2012 09:36:15 -0800
Subject Re: [Regression w/ patch] Media commit causes user space to misbahave (was: Re: Linux 3.8-rc1)
 
 
On Sun, Dec 23, 2012 at 6:08 AM, Mauro Carvalho Chehab
<mchehab@redhat.com> wrote:
>
> Are you saying that pulseaudio is entering on some weird loop if the
> returned value is not -EINVAL? That seems a bug at pulseaudio.
 
Mauro, SHUT THE FUCK UP!
 
It's a bug alright - in the kernel. How long have you been a
maintainer? And you *still* haven't learnt the first rule of kernel
maintenance?
 
If a change results in user programs breaking, it's a bug in the
kernel. We never EVER blame the user programs. How hard can this be to
understand?
 
To make matters worse, commit f0ed2ce840b3 is clearly total and utter
CRAP even if it didn't break applications. ENOENT is not a valid error
return from an ioctl. Never has been, never will be. ENOENT means "No
such file and directory", and is for path operations. ioctl's are done
on files that have already been opened, there's no way in hell that
ENOENT would ever be valid.
 
> So, on a first glance, this doesn't sound like a regression,
> but, instead, it looks tha pulseaudio/tumbleweed has some serious
> bugs and/or regressions.
 
Shut up, Mauro. And I don't _ever_ want to hear that kind of obvious
garbage and idiocy from a kernel maintainer again. Seriously.
 
I'd wait for Rafael's patch to go through you, but I have another
error report in my mailbox of all KDE media applications being broken
by v3.8-rc1, and I bet it's the same kernel bug. And you've shown
yourself to not be competent in this issue, so I'll apply it directly
and immediately myself.
 
WE DO NOT BREAK USERSPACE!
 
Seriously. How hard is this rule to understand? We particularly don't
break user space with TOTAL CRAP. I'm angry, because your whole email
was so _horribly_ wrong, and the patch that broke things was so
obviously crap. The whole patch is incredibly broken shit. It adds an
insane error code (ENOENT), and then because it's so insane, it adds a
few places to fix it up ("ret == -ENOENT ? -EINVAL : ret").
 
The fact that you then try to make *excuses* for breaking user space,
and blaming some external program that *used* to work, is just
shameful. It's not how we work.
 
Fix your f*cking "compliance tool", because it is obviously broken.
And fix your approach to kernel programming.
 
               Linus
Ваша оценка: Нет Средняя оценка: 5 (1 vote)
pomodor

Как говорится, не ошибается тот, кто ничего не делает. У Торвальдса давно в блоге про одни ныряния. Ну и нырял бы дальше, чего на людей бросаться?

Посмотрим чем ответит Мауро на такое оскорбление. Сильно бить папу Линукса, наверное, не надо, но хотя бы очки разбить стоит, чтобы сильно не зазнавался. ;)

Ваша оценка: Нет Средняя оценка: 5 (1 vote)

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

Помните случай с Adobe Flash и glibc? Никто не сомневается, что авторы флеша тогда нарушили стандарт языка Си. Но факт остаётся фактом -- изменение в коде библиотеки сломало функциональность прикладного ПО.

Цель любой нормальной ОС включает в себя обеспечить удобную среду для стороннего ПО. А среда, в которой из-за обновления в ядре или вышележащей библиотеке (особенно учитывая то, как их много, и то, что они обновляются не в один день) может помешать работе прикладного ПО, удобной не назвать никак.

И разработчикам любых библиотек стоит в первую очередь помнить об обратной совместимости. Хотите поменять функцию DoSomething? Напишите DoSomethingV2 или DoSomethingEx и пишите новую функциональность в неё -- чтобы разработчикам потом не пришлось мучаться с переписыванием или пересборкой своего софта раз в шесть месяцев.

Если бы такое случилось не в Linux, а в Windows, то соответствующих разработчиков из Microsoft уже давным давно повесили бы. Как минимум на "доску позора".

Ваша оценка: Нет Средняя оценка: 5 (1 vote)

Просто зае.....хм достали чела своей криворукостью

Ваша оценка: Нет Средняя оценка: 3 (2 votes)
Отправить комментарий
КАПЧА
Вы человек? Подсказка: зарегистрируйтесь, чтобы этот вопрос больше никогда не возникал. Кстати, анонимные ссылки запрещены.
CAPTCHA на основе изображений
Enter the characters shown in the image.
Яндекс.Метрика