Krisen i promoveringen af Rust i kernen skyldes bekymringer om kompliceret vedligeholdelse.

Christoph Hellwig, vedligeholder af DMA, KVM, Slab Allocator subsystemerne og PowerPC-arkitekturen i Linux-kernen, som tidligere har været medlem af Linux Foundations tekniske udvalg og har været sagsøger i en retssag relateret til GPL mod VMware, nægtede at godkende patches relateret til udviklingen af drivere på Rust. De foreslåede patches tilføjede indpakninger over flere funktioner i DMA-subsystemet, der muliggør brug af DMA i drivere skrevet i Rust.

Som årsag til afvisningen blev nævnt, at vedligeholdelse af koden ville blive mere kompleks med indpakninger på andre sprog, og at man ønskede at bevare de programmeringsmæssige interfaces til DMA i en læsbar form på C-sproget, uden at det bliver utydeligt med indpakninger. Christoph foreslog at henvende sig direkte til den oprindelige C API for DMA i hver Rust-driver for at undgå at skabe yderligere abstraktioner, som vedligeholdere af kernen ville være afhængige af.

Udviklerne af patches oplyste, at de ville påtage sig hele arbejdet med vedligeholdelse af koden i Rust, var parate til at vedligeholde disse patches selv og havde flyttet indpakningerne til en separat underkatalog (rust/kernel/dma.rs). Som svar lagde Christoph veto («Nacked-by») mod optagelse af patches relateret til Rust og påpegede, at han ikke ønskede endnu en vedligeholder. Christoph udtalte, at hvis indpakningsudviklerne ønskede at undgå vedligeholdelse af Linux på grund af blandingen af flere sprog i én kodebase, burde de gøre det i deres driver, og ikke sprede denne kræftsvulst til de grundlæggende subsystemer i kernen.

Desuden præciserede Christoph, at han ikke har noget imod Rust-sproget og anser det for ét af de bedste nye sprog, men han er imod blandingen af kode på forskellige sprog. Ifølge Christoph er han for at skabe nye projekter på Rust, men imod at blande Rust med store C-kodebaser, da sådan en blanding kraftigt reducerer vedligeholdelsesevnen af kernen som et integreret projekt.

Kernen i problemerne med vedlighold er, at Rust-omslagene gør vedligeholderne afhængige af koden skrevet i Rust. Ved første øjekast synes det, at omslagene blot er lag oven på C-strukturer og funktioner, der ikke påvirker udvikling og vedligeholdelse af C-koden. Men det er ikke sandt. Når disse omslag er til stede, skal udviklerne af subsystemer skrevet i C tage højde for indflydelsen af deres ændringer på den fortsatte funktionalitet af omslagene. Enhver ændring af datatyper eller interne funktioner i C kan kræve ændringer i omslagskoden, så ændringer, der påvirker omslagene i C-koden, skal overvåges og synkroniseres med Rust-koden. Mange vedligeholdere er ikke villige til at påtage sig det ekstra ansvar for at rette problemer, der opstår i Rust-koden, og har ikke til hensigt at bruge tid på at overvåge tilstanden af Rust-omslagene.

Situationen med den voksende complexity i vedligeholdelse er ikke hypotetisk. Diskussionen blev deltaget i af Jason Gunthorpe, vedligeholder af TPM, VFIO og Infiniband fra NVIDIA, som bragte et eksempel på, hvordan Linus Torvalds afviste en pull-anmodning med ændringer i subsystemet til hukommelsesstyring, da denne ændring forårsagede fejl ved forsøg på at kompilere kernen med Rust-understøttelse aktiv. Fejlen opstod, fordi vedligeholderne af koden i Rust ikke havde tilføjet nødvendige ændringer til omslagsgeneratoren (bindgen). Dermed blev vedligeholderne af hukommelsesstyringssystemet, ved at fremme ændringen, som var helt korrekt set fra C-kodens og kernen som helhed, afhængige af optional tredjeparts kode i kernen, som andre mennesker har ansvaret for.

Afvisningen af at acceptere omslagskode over DMA-opkald satte udviklerne af Rust for Linux-projektet i en blindgyde, da udviklingen af fuldgyldige drivere i Rust uden sådanne omslag vil være besværlig. Hector Martin, vedligeholder af koden til støtte for ARM-chips fra Apple og leder af Ashai Linux-projektet, foreslog som en løsning på konflikten at få omslaget godkendt direkte gennem Linus Torvalds, uden om vedligeholderen af DMA-subsystemet. Hvis Linus accepterer en sådan overtrædelse af hierarkiet og den etablerede praksis, kan det føre til en ledelsesmæssig krise i kernenudviklingen, og hvis han nægter, stopper det fremskridtene for Rust i kernen.

Som et alternativ nævnte Hector at inddrage Christoph til ansvar for overtrædelse af adfærdskodekset på grund af en kommentar, hvor Christoph sammenlignede Rust med en kræftsvulst. Desuden skrev Hector, at han var træt af alt det bureaukratiske, ikke var klar til blindt at stole på de eksisterende processer og antydede indblanding fra sociale medier. Dave Airlie, vedligehaveren af DRM-under-systemet, rådede mod at optrappe konflikten og understregede vigtigheden af at forstå, at giftig adfærd er uacceptabel fra begge parter, uanset om deltageren i diskussionen har ret eller ej.

Linus Torvalds deltager i diskussionen og bemærker, at problemet muligvis ligger hos Hector selv og hans selvsikkerhed i, at han ved noget bedre end andre, snarere end i den nuværende udviklingsproces for kernen, som fungerer. Kernen har sine problemer, men det er en del af livet — der er ikke noget perfekt. Forsøg på heksejagt via sociale medier er det, der skræmmer Linus væk fra at have noget med Hectors tilgang at gøre. For Linus har tekniske diskussioner og patches betydning, ikke pres fra sociale medier.

Som svar sendte Hector en anmodning om at fjerne sig selv fra listen over vedligeholdere af ARM/APPLE-platformen, da han havde mistet tilliden til den anvendte udviklingsproces i kernen og tilgangen til fællesskabsledelse. Han erklærede også, at udviklingen af ARM/Apple-platformen vil fortsætte uden for den primære Linux-kernel. ARM/Apple-platformen har stadig en vedligeholder i kernen — Sven Peter, som har til hensigt at fortsætte med at støtte platformen i kernen.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster