Кристоф Хелвиг ушёл с поста мэйнтейнера DMA Mapping и ConfigFS после форсирования Rust

Кристоф Хелвиг (Christoph Hellwig) ушёл с позиции мэйнтейнера подсистем dma-mapping и configfs. Уход ограничился отправкой заявки на удаление из списка мэйнтейнеров и сообщением о передаче управления оставшимся сопровождающим. В подсистеме dma-mapping сопровождение продолжит Марек Шипровски (Marek Szyprowski) из Samsung, а в configfs – Джоэл Беккер (Joel Becker) из Oracle.

Кристоф Хелвиг пока остаётся в числе мэйнтейнеров подсистем NVM Express, vmalloc и FreeVXFS. В прошлом Кристоф входил в управляющий технический комитет организации Linux Foundation и участвовал в разработке таких подсистем, как XFS, KVM, Trace events, SCSI и Slab Allocator, а также занимался сопровождением архитектуры PowerPC в ядре Linux. Кроме того Кристоф выступал истцом в судебном разбирательстве с VMware, связанном с нарушением лицензии GPL.

Прекращение сопровождения подсистем dma-mapping и configfs обусловлено заявлением Линуса Торвальдса о намерении включать в ядро обвязки на языке Rust независимо от согласия мэйнтейнеров подсистем, для которых созданы данные обвязки. Кристоф принципиально отказался принимать в ядро Rust-обвязку над функциями для работы с DMA, что привело к конфликту, в результате которого ядро покинули мэйнтейнеры подсистем Nouveau и ARM/Apple. 24 февраля разработчики проекта Rust for Linux предложили патч со слоем абстракции для ФС configfs, сопровождением которой занимался Кристоф Хелвиг. Кристоф не принял участие в обсуждении, а через несколько дней удалил себя из списка мэйнтейнеров dma-mapping и configfs.

Кристоф Хелвиг считает недопустимым использование нескольких языков программирования в таких сложных проектах как ядро Linux. По мнению Кристофа, смешанные кодовые базы усложняют работу мэйнтейнеров, так как ставят мэйнтейнеров в зависимость от кода на другом языке. В частности, при наличии обвязок на Rust разработчики подсистем, написанных на Си, должны учитывать влияние их изменений на продолжение работоспособности обвязок. Любое изменение структур данных или внутренних функций на Си может привести к необходимости изменения кода обвязок, поэтому влияющие на обвязки изменения в Си коде нужно отслеживать и синхронизировать с кодом на Rust.

В процессе разработки ядра уже были факты отклонения pull-запроса с изменениями в подсистеме управления памятью, так как данное изменение приводило к сбою при попытке сборки ядра с включением поддержки Rust. Сбой возник из-за рассинхронизации с кодом для генерации Rust-обвязок (bindgen) и привёл к тому, что сопровождающие подсистему управления памятью при продвижении изменения, полностью корректного с точки зрения кода на Си и ядра в целом, оказались зависимы от опционального стороннего кода в ядре, за который отвечают другие люди.

Линус Торвальдс считает, что Кристоф Хелвиг не имеет полномочий блокировать приём в ядро Rust-обвязок для подсистемы DMA, так как код данных обвязок не затрагивает код подсистемы DMA Mapping и реализован в отдельном подкаталоге, сопровождением которого занимается отдельный мэйнтейнер. Линус сравнил действия Кристофа с попыткой контролировать область использования подсистемы DMA, при том, что мэйнтейнеры отвечают лишь за код своей подсистемы, но не за то, как и кем используется результат работы этого кода.

Release. Ссылка here.