Christoph Hellwig, maintainer van de DMA-subsystemen, KVM, Slab Allocator en de PowerPC-architectuur in de Linux-kernel, die ooit deel uitmaakte van het technisch bestuurscomité van de Linux Foundation en als eiser optrad in een rechtszaak met VMware gerelateerd aan de GPL, weigerde patches te bevestigen die verband hielden met de ontwikkeling van stuurprogramma's in de Rust-taal. De voorgestelde patches voegden wrappers toe rond verschillende functies van het DMA-subsysteem, waardoor DMA kon worden gebruikt in stuurprogramma's geschreven in Rust.
Als reden voor de weigering werd de complexiteit van het onderhouden van de code genoemd bij het gebruik van wrappers in andere talen en de wens om de programmeerinterfaces naar DMA in een leesbare C-vorm te behouden, zonder deze te verwateren door onduidelijke wrappers. Christoph stelde voor om rechtstreeks naar de oorspronkelijke C API van DMA in elk stuurprogramma voor Rust te verwijzen, om extra abstracties te voorkomen waar de kernel-ondersteuners afhankelijk van zouden worden.
De ontwikkelaars van de patches gaven aan dat zij alle werkzaamheden aan de code in Rust op zich zouden nemen, bereid waren deze patches zelf te onderhouden en de wrappers in een aparte subdirectory (rust/kernel/dma.rs) te plaatsen. In reactie daarop heeft Christoph een veto ('Nacked-by') uitgesproken tegen de acceptatie van de aan Rust gerelateerde patches en aangegeven dat hij geen extra onderhoudsdruk nodig heeft. Christoph verklaarde dat als de ontwikkelaars van de wrappers willen dat het onderhouden van Linux onmogelijk wordt door het mengen van verschillende talen in één codebasis, zij dit in hun eigen stuurprogramma zouden moeten doen en deze kankerachtige tumor niet op de kernsubsystemen moeten verspreiden.
Tegelijkertijd verduidelijkte Christoph dat hij niets tegen de Rust-taal heeft en deze beschouwt als een van de beste nieuwe talen, maar hij is tegen het mengen van code in verschillende talen. Volgens Christoph is hij voor de creatie van nieuwe projecten in Rust, maar tegen het mengen van Rust met grote codebases in C, omdat zo'n mengeling het onderhoudsgemak van de kernel, als geïntegreerd project, sterk vermindert.
De kern van de problemen met de ondersteuning is dat Rust-wraps de ondersteuners afhankelijk maken van de code in de Rust-taal. Op het eerste gezicht lijkt het alsof de wraps slechts bovenop C-structuren en functies zijn gebouwd, die geen invloed hebben op de ontwikkeling en ondersteuning van de code in C. Maar dat is niet het geval. Bij het bestaan van dergelijke wraps moeten ontwikkelaars van subsystemen die in C zijn geschreven rekening houden met de impact van hun wijzigingen op de voortzetting van de functionaliteit van de wraps. Elke wijziging in datatypes of interne functies in C kan leiden tot de noodzaak om de code van de wraps te wijzigen, daarom moeten wijzigingen die invloed hebben op de wraps in de C-code worden gevolgd en gesynchroniseerd met de code in Rust. Veel ondersteuners zijn niet bereid om extra verantwoordelijkheid te nemen voor het oplossen van problemen die zich in de Rust-code voordoen en zijn niet van plan hun tijd te besteden aan het bijhouden van de status van Rust-wraps.
De situatie met de complexiteit van de ondersteuning is niet hypothetisch. Jason Gunthorpe, de maintainer van TPM, VFIO en Infiniband bij NVIDIA, voegde zich bij de discussie en gaf een voorbeeld van het afwijzen door Linus Torvalds van een pull-verzoek met wijzigingen in de geheugensubsysteem, omdat deze wijziging leidde tot een crash bij het proberen om de kernel met ondersteuning voor Rust te compileren. De crash trad op omdat de ondersteuners van de Rust-code de nodige wijzigingen in de bindgen-generator niet hadden toegevoegd. Hierdoor waren de ondersteuners van het geheugensubsysteem bij het doorvoeren van een wijziging die volledig correct was vanuit het perspectief van de C-code en de kernel in het algemeen, afhankelijk van optionele externe code in de kernel waarvoor andere mensen verantwoordelijk zijn.
De weigering om wrap-code rond DMA-aanroepen te accepteren heeft de ontwikkelaars van het Rust for Linux-project in een doodlopende straat gebracht, aangezien zonder dergelijke wraps de ontwikkeling van volledige stuurprogramma's in de Rust-taal moeilijk zal zijn. Hector Martin, maintainer van de code voor de ondersteuning van Apple ARM-chips en leider van het Ashai Linux-project, stelde als mogelijke oplossing voor om de wrap rechtstreeks via Linus Torvalds geaccepteerd te krijgen, langs de maintainer van het DMA-subsysteem. Als Linus instemt met een dergelijke schending van de hiërarchie en de bestaande praktijk, kan dit leiden tot een crisis in het management van de kernelontwikkeling, en als hij weigert, kan dit de voortgang van Rust in de kernel stopzetten.
Als een optie noemde Hector de aansprakelijkheid van Christoph voor het schenden van de gedragscode vanwege een opmerking waarin Christoph Rust vergeleek met een kankertumor. Bovendien schreef Hector dat hij moe was van alle bureaucratische rompslomp, niet bereid was om simpelweg te vertrouwen op bestaande processen en suggeerde hij een betrokkenheid van sociale media. Dave Airlie, de maintainer van de DRM-subsystemen, adviseerde om het conflict niet op te blazen en te begrijpen dat giftig gedrag aan beide kanten onacceptabel is, ongeacht wie er gelijk heeft in de discussie.
Linus Torvalds voegde zich bij de discussie en merkte op dat het probleem misschien bij Hector zelf ligt en zijn zelfvertrouwen dat hij het beter weet dan anderen, en niet bij het huidige ontwikkelingsproces van de kernel, dat functioneert. Het ontwikkelingsproces van de kernel heeft problemen, maar dat is de realiteit – er is niets perfect in het leven. Pogingen tot intimidatie via sociale media verminderen Linus' zin om iets te maken te hebben met Hector's benadering. Voor Linus zijn technische discussies en patches belangrijker dan druk uitoefenen via sociale media.
In reactie vroeg Hector om verwijderd te worden als maintainer van het ARM/APPLE-platform, omdat hij het vertrouwen in de ontwikkelingsprocessen en de gemeenschapsmanagement aan de kernel had verloren. Hij verklaarde ook dat de ontwikkeling van het ARM/Apple-platform buiten de hoofdkernel van Linux zal worden voortgezet. Er is nog een maintainer voor het ARM/Apple-platform binnen de kernel, Sven Peter, die van plan is het platform binnen de kernel te blijven ondersteunen.
Bron: opennet.ru
