Kristof Hellwig, mbajtësi i nën-sistemit DMA, KVM, Slab Allocator dhe arkitekturës PowerPC në kernelin Linux, i cili në një kohë ishte pjesë e komitetit të menaxhimit teknik të organizatës Linux Foundation dhe kishte vepruar si paditës në një proces gjyqësor lidhur me GPL ndaj VMware, refuzoi të konfirmonte patch-et që lidhen me mbështetjen e zhvillimit të shoferëve në gjuhën Rust. Patch-et e propozuara shtonin blloqe mbi disa funksione të nën-sistemit DMA, duke lejuar përdorimin e DMA në shoferët në gjuhën Rust.
Si arsye për refuzimin u përmend kompliksimi i përditësimit të kodit për shkak të mbështetjes në gjuhë të tjera dhe dëshira për të ruajtur ndërfaqet e programimit për DMA në një formë të lexueshme në gjuhën C, pa i mbivendosur ato me mbështetje të paqartë. Christoph sugjeroi që të adresohet direkt në API-në origjinale C të DMA në çdo driver në gjuhën Rust, për të mos krijuar abstraksione të tjera nga të cilat do të varëseshin mbajtësit e bërthamës.
Zhvilluesit e patch-eve treguan se do të marrin përsipër gjithë punën e mirëmbajtjes së kodit në Rust, janë të gatshëm të mbajnë patch-et përkatëse dhe kanë hequr blloqet në një nënkatelog të veçantë (rust/kernel/dma.rs). Në përgjigje, Kristof vendosi një veto ("Nacked-by") ndaj pranimit të patch-eve që lidhen me Rust dhe tha se nuk i duhej një mirëmbajtës tjetër. Kristof deklaroi se nëse zhvilluesit e blloqeve dëshirojnë të arrijnë pamundësinë e mirëmbajtjes së Linux-it për shkak të përzierjes së disa gjuhëve në një bazë kodike, ata duhet ta bëjnë këtë në shoferin e tyre, jo ta përhapin këtë tumor në nën-sistemet kryesore të kernelit.
Megjithatë, Kristof sqaroi se nuk ka asgjë kundër gjuhës Rust dhe e konsideron atë si një nga gjuhët më të mira të reja, por është kundër përzierjes së kodit në gjuhë të ndryshme. Sipas Kristofit, ai është për krijimin e projekteve të reja në Rust, por është kundër përzierjes së Rust në bazat e mëdha të kodit në C, pasi kjo përzierje ndikon shumë në lehtësinë e mirëmbajtjes së kernelit si një projekt të integruar.
Thelbi i problemeve të mirëmbajtjes është se blloqet Rust vunë mirëmbajtësit në varësi nga kodi në gjuhën Rust. Në pamje të parë, duket se blloqet janë thjesht shtresa mbi strukturat dhe funksionet C, të cilat nuk ndikojnë fare në zhvillimin dhe mirëmbajtjen e kodit në C. Por kjo nuk është e vërtetë. Me praninë e këtyre blloqeve, zhvilluesit e nën-sistemeve të shkruara në C duhet të marrin parasysh ndikimin e ndryshimeve të tyre në vazhdimësinë e funksionimit të blloqeve. Çdo ndryshim në strukturat e dhënave ose funksionet e brendshme në C mund të sjellë nevojën për ndryshimin e kodit të blloqeve, prandaj ndryshimet në kodin C që ndikojnë në blloqe duhet të monitorohen dhe të sinkronizohen me kodin në Rust. Shumë mirëmbajtës nuk janë të gatshëm të marrin përsipër përgjegjësinë shtesë për zgjidhjen e problemeve që ndodhin në kodin në Rust, dhe nuk kanë ndërmend të kalojnë kohën e tyre në monitorimin e statusit të blloqeve Rust.
Situata e komplikuar e mirëmbajtjes nuk është një teorike. Në diskutim u përfshi Jason Gunthorpe, mbajtësi i TPM, VFIO dhe Infiniband nga NVIDIA, i cili solli shembullin e refuzimit të Linus Torvalds të një kërkese pull me ndryshime në nën-sistemin e menaxhimit të memories, pasi ky ndryshim shkaktonte dështimin në përpjekjen për të ndërtuar kernelin me mbështetje për Rust. Dështimi ndodhi sepse mirëmbajtësit e kodit në Rust nuk patën bërë ndryshimet e nevojshme në gjeneratorin e blloqeve (bindgen). Kështu, ata që mirëmbanin nën-sistemin e menaxhimit të memories gjatë avancimit të ndryshimit, tërësisht korrekt nga pikëpamja e kodit C dhe kernelit në tërësi, u vunë në varësi nga kodi dytësor opsional në kernel, për të cilin ishin përgjegjës njerëz të tjerë.
Refuzimi për të pranuar kodin e blloqeve mbi thirrjet DMA vendosi zhvilluesit e projektit Rust for Linux në një situatë të paqartë, pasi pa këto blloqe, zhvillimi i shoferëve të plota në gjuhën Rust do të jetë i vështirë. Hector Martin, mbajtësi i kodit për mbështetje të ARM-chip-ëve të Apple dhe lider i projektit Ashai Linux, si një alternativë për zgjidhjen e konfliktit propozoi të arrinte miratimin e blloqeve drejtpërdrejt përmes Linus Torvalds, duke anashkaluar mirëmbajtësin e nën-sistemit DMA. Nëse Linus pranon një shkelje të tillë të subordinates dhe praktikës ekzistuese, kjo mund të çojë në një krizë të menaxhimit të zhvillimit të kernelit, dhe nëse refuzon, do të ndalojë avancimin e Rust në kernel.
Si një alternativë, Hector përmendi angazhimin e Kristofit për shkeljen e kodit të sjelljes për shkak të një komenti në të cilin Kristof e krahasoi Rust me një tumor kancerogjen. Për më tepër, Hector shkroi se ishte lodhur nga të gjitha procedurat burokratike, nuk ishte i gatshëm të besonte thjesht proceset ekzistuese dhe aludoi për angazhimin e rrjeteve sociale. Dave Airlie, mbajtësi i nën-sistemit DRM, këshilloi të mos e teprojnë konfliktin dhe të kuptojnë se sjellja toksike është e papranueshme nga të dyja palët, pavarësisht nëse anëtari i diskutimit është i drejtë apo jo.
Pjesa e diskutimit u bashkua nga Linus Torvalds, i cili theksoi se problemi mund të jetë te Hectori dhe vetëbesimi i tij se diçka ka më shumë njohuri se të tjerët, dhe jo te procesi aktual i zhvillimit të kernels, i cili funksionon. Procesi i zhvillimit të kernels ka probleme, por kjo është një realitet i jetës - nuk ka asgjë të përsosur në jetë. Përpjekjet për përjashtim përmes mediave sociale janë ato që e largojnë Linus nga të pasurit ndonjë lidhje me qasjen e Hectorit. Çfarë ka rëndësi për Linus janë diskutimet teknike dhe patch-et, e jo ndjesia e presionit përmes mediave sociale.
Në përgjigje, Hectori dërgoi një kërkesë për të hequr emrin e tij nga lista e mbështetjes për platformën ARM/APPLE, pasi humbi besimin në procesin e përdorur në kernel dhe qasjen e menaxhimit të komunitetit. Ai gjithashtu deklaroi se zhvillimi i platformës ARM/Apple do të vazhdojë jashtë kernel-it kryesor të Linux. Në kernel ka ende një mirëmbajtës tjetër për platformën ARM/Apple - Sven Peter, i cili ka ndërmend të vazhdojë mbështetje për platformën në kernel.
Burimi: opennet.ru
