Линус Торвальдс выступил с критикой контроля качества в DRM-подсистеме ядра Linux


В ответ на очередной набор изменений в подсистеме DRM (Direct Rendering Manager), присланный для включения в состав будущей ветки ядра 4.11, Линус Торвальдс пришёл в ярость и в жесткой форме раскритиковал Дэвида Эйрли (David Airlie), мэйнтейнера подсистемы DRM, за его отношение к контролю качества присылаемых патчей. В частности, Линус недоумевает как мэйнтейнер мог отправить для финального включения в новый выпуск ядра набор патчей, который явно не тестировался и непригоден для сборки из-за ошибки компиляции.

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

В частности при сборке присланного кода компилятором выводилось несколько десятков предупреждений и сборка завершалась ошибкой, изучение которой показало, что код не собирается если модуль backlight не вкомпилируется в ядро, а собирается в виде модуля (CONFIG_BACKLIGHT_CLASS_DEVICЕ=m). Более того, изменение для tinydrm было переотправлено мэйнтейнером на следующий день после получения от конечного разработчика и, судя по всему, без какого-либо тестирования.

В качестве ответных мер на подобное перебрасывание патчей в последний момент, Линус намерен ввести для DRM-подсистемы правило предварительного помещения изменений в ветку linux-next, до открытия окна приёма изменений в очередной выпуск ядра. Таким образом все изменения графических драйверов должны будут вначале быть обкатаны в ветке linux-next, лишь после чего смогут войти в основной состав ядра.

То, что полная неработоспособность выявляется последней инстанцией в ходе беглого осмотра и простейшего тестирования сборкой, указывает на серьёзные организационные проблемы. Линус был близок к тому, чтобы не включать набор патчей DRM в ядро 4.11, чувствуя что кроме него эти патчи никто больше не тестировал. Подобный шаг привёл бы отклонению обновлений графических драйверов i915, amdgpu, radeon и nouveau, но, в конечном счёте, Линус принял исправленный вариант изменений к подсистеме DRM. Так как в настоящий момент приходится отклонять или принимать все изменения из набора DRM ("всё или ничего"), Линус намерен потребовать разбиения pull-запросов DRM на более мелкие части.