Christoph Hellwig, underhÄllare av DMA, KVM, Slab Allocator och PowerPC-arkitekturen i Linux-kÀrnan, som tidigare varit medlem i Linux Foundations tekniska ledningskommitté och varit kÀrande i rÀttsliga tvister rörande GPL med VMware, har vÀgrat att bekrÀfta patchar relaterade till stöd för utvecklingen av drivrutiner pÄ Rust-sprÄket. De föreslagna patcharna skulle lÀgga till wrapperar över flera funktioner i DMA-systemet för att möjliggöra anvÀndning av DMA i drivrutiner skrivna i Rust.
Som skÀl för vÀgran nÀmndes ett ökat underhÄllsarbete för koden med wrapperar pÄ andra sprÄk och en vilja att hÄlla programmeringsgrÀnssnitten till DMA i lÀsbar form pÄ C-sprÄket, utan att fördela dem pÄ otydliga wrapperar. Christoph föreslog att man istÀllet ska mappa direkt till det ursprungliga C API:et för DMA i varje drivrutin pÄ Rust, för att inte skapa ytterligare abstraktioner som kÀrnunderhÄllare kommer att behöva förlita sig pÄ.
Utvecklarna av patcharna angav att de skulle ta pÄ sig allt arbete med att underhÄlla koden pÄ Rust, att de Àr redo att underhÄlla dessa patchar sjÀlva och att de flyttade wrapperarna till en separat undermapp (rust/kernel/dma.rs). I svaret lade Christoph veto ('Nacked-by') mot att ta emot de relaterade patcharna pÄ Rust och pÄpekade att han inte behövde en till underhÄllare. Christoph uttalade att om utvecklarna av wrapperarna vill orsaka olösligt underhÄll av Linux genom att blanda flera sprÄk i en kodbas, borde de göra det i sin egen drivrutin och inte sprida denna cancerliknande tumör till huvudsystemen i kÀrnan.
DÀrutöver förtydligade Christoph att han inte har nÄgot emot Rust-sprÄket och anser att det Àr ett av de bÀsta nya sprÄken, men att han Àr emot blandning av kod pÄ olika sprÄk. Christoph sade att han Àr för skapandet av nya projekt pÄ Rust, men emot att blanda Rust med stora kodbaser pÄ C, eftersom en sÄdan blandning kraftigt minskar bekvÀmligheten av underhÄllet av kÀrnan som ett integrerat projekt.
Problemet med underhÄll Àr att Rust-bindningar gör att utvecklarna blir beroende av koden i Rust. Vid första anblick verkar det som om bindningarna bara Àr överbyggnader pÄ C-strukturer och funktioner som inte pÄverkar utvecklingen och underhÄllet av C-kod. Men sÄ Àr det inte. Med sÄdana bindningar mÄste utvecklarna av subsystem skrivna i C ta hÀnsyn till hur deras förÀndringar pÄverkar bindningarnas fortsatta funktionalitet. Varje förÀndring av datatyper eller interna funktioner i C kan leda till att bindningskoden mÄste Àndras, sÄ förÀndringar i C-koden som pÄverkar bindningarna mÄste övervakas och synkroniseras med Rust-koden. MÄnga utvecklare Àr inte beredda att ta pÄ sig det extra ansvaret att ÄtgÀrda problem som uppstÄr i Rust-koden och har ingen avsikt att spendera sin tid pÄ att övervaka statusen för Rust-bindningarna.
Situationen med det komplexa underhÄllet Àr inte hypotetisk. Jason Gunthorpe, underhÄllare av TPM, VFIO och Infiniband frÄn NVIDIA, anslöt sig till diskussionen och tog exempel pÄ hur Linus Torvalds avvisade en pull-begÀran med Àndringar i minneshanterings-subsystemet, eftersom denna förÀndring ledde till att kompileringen av kÀrnan misslyckades med stöd för Rust. Felet uppstod eftersom de som underhöll Rust-koden inte hade lagt till nödvÀndiga Àndringar i bindningsgeneratorn (bindgen). PÄ sÄ sÀtt blev de som underhöll minneshanteringssubsystemet beroende av valfri extern kod i kÀrnan, som andra ansvarade för, nÀr de drev igenom en förÀndring som var helt korrekt utifrÄn C-koden och kÀrnan som helhet.
Att vÀgra ta emot bindningskod för DMA-anrop förde utvecklarna av projektet Rust for Linux i en ÄtervÀndsgrÀnd, eftersom utan sÄdana bindningar skulle utvecklingen av fullstÀndiga drivrutiner i Rust bli problematisk. Hector Martin, underhÄllare av koden för att stödja Apples ARM-chip och ledare för projektet Ashai Linux, föreslog som en lösning pÄ konflikten att fÄ bindningen godkÀnd direkt av Linus Torvalds, utan att gÄ via den som underhÄller DMA-subsystemet. Om Linus gÄr med pÄ detta brott mot hierarkin och den befintliga praktiken kan det leda till en kris i utvecklingen av kÀrnan, och om han vÀgrar kan det stoppa framstegen för Rust i kÀrnan.
Som alternativ nÀmnde Hector att Christoph borde hÄllas ansvarig för ett brott mot uppförandekoden pÄ grund av en kommentar dÀr Christoph jÀmförde Rust med en cancerknöl. Dessutom skrev Hector att han var trött pÄ all byrÄkratisk krÄngel, inte beredd att bara lita pÄ de etablerade processerna och antydde att sociala medier skulle engageras. Dave Airlie, underhÄllet av DRM-subsystemet, rÄdde att inte blÄsa upp konflikten och förstÄ att giftigt beteende Àr oacceptabelt frÄn bÄda sidor, oavsett om diskussionsdeltagaren har rÀtt eller fel.
Linus Torvalds deltog i diskussionen och pĂ„pekade att problemet kanske ligger i Hector sjĂ€lv och hans sjĂ€lvsĂ€kerhet i att tro att han vet bĂ€ttre Ă€n andra, snarare Ă€n i den nuvarande utvecklingsprocessen av kĂ€rnan som fungerar. Utvecklingsprocessen för kĂ€rnan har sina problem, men det Ă€r livets verklighet â inget Ă€r perfekt i livet. Försök att trakassera via sociala medier avskrĂ€cker Linus frĂ„n att ha nĂ„got att göra med Hectors tillvĂ€gagĂ„ngssĂ€tt. För Linus Ă€r tekniska diskussioner och patchar viktiga, inte tryck via sociala medier.
Som svar skickade Hector en begÀran om att tas bort som underhÄllare av ARM/APPLE-plattformen, eftersom han hade förlorat tron pÄ den tillÀmpade utvecklingsprocessen inom kÀrnan och tillvÀgagÄngssÀttet för samhÀllshantering. Han angav ocksÄ att utvecklingen av ARM/Apple-plattformen skulle fortsÀtta utanför den primÀra Linux-kÀrnan. En annan underhÄllare för ARM/Apple-plattformen Àr Sven Peter, som avser att fortsÀtta underhÄllet av plattformen i kÀrnan.
KĂ€lla: opennet.ru
