Krízis a Rust promóciójában a kernelbe a támogatás bonyolultságától való félelmek miatt

Christoph Hellwig, a maintainer of the DMA subsystem, KVM, Slab Allocator, and PowerPC architecture in the Linux kernel, who was once part of the technical steering committee of the Linux Foundation and was a plaintiff in a legal dispute related to the GPL with VMware, has refused to approve patches related to driver development support in the Rust language. The proposed patches added wrappers over several functions of the DMA subsystem, allowing DMA usage in drivers written in Rust.

The reason for the refusal mentioned was the increased complexity of maintaining the code with wrappers in other languages and the desire to keep the API for DMA in a readable form in C, without spreading it over unclear wrappers. Christoph suggested directly calling the original C API of DMA in every driver written in Rust to avoid creating additional abstractions that kernel maintainers would have to depend on.

The developers of the patches indicated that they would take on all the work of maintaining the Rust code, ready to manage these patches independently, and they moved the wrappers to a separate subdirectory (rust/kernel/dma.rs). In response, Christoph vetoed ("Nacked-by") the acceptance of the Rust-related patches and stated that he did not need another maintainer. Christoph declared that if the wrapper developers wanted to make the maintenance of Linux impossible due to mixing multiple languages in one codebase, they should do it in their driver and not spread this cancerous growth to the main subsystems of the kernel.

At the same time, Christoph clarified that he has nothing against the Rust language and considers it one of the best new languages, but he is against mixing code in different languages. According to Christoph, he supports the creation of new projects in Rust, but is against mixing Rust into large codebases in C, as such mixing significantly reduces the maintainability of the kernel as an integrated project.

A problémák lényegét az adja, hogy a Rust-átfedések a kódot a Rust nyelven írtak függőségbe hozzák. Első ránézésre úgy tűnik, hogy az átfedések csak egy réteg a C struktúrák és funkciók fölött, amelyek nem befolyásolják a C nyelven írt kód fejlesztését és karbantartását. De ez nem igaz. Az ilyen átfedések meglétében a C nyelven írt alrendszerek fejlesztőinek figyelembe kell venniük a változások hatását az átfedések működésére. Bármilyen módosítás a C nyelv data struktúrájában vagy belső funkcióiban szükségesé teheti az átfedések kódjának módosítását, ezért a C kódot érintő változásokat nyomon kell követni és szinkronizálni kell a Rust kóddal. Sok karbantartó nem hajlandó extra felelősséget vállalni a Rust kódjában felmerülő problémák megoldásáért, és nem áll szándékában időt tölteni a Rust-átfedések állapotának nyomon követésével.

A karbantartás bonyolódásának helyzete nem elvont. A vita középpontjába Jason Gunthorpe lépett, aki a NVIDIA TPM, VFIO és Infiniband karbantartója, és példaként említette Linus Torvaldsnak a memóriakezelő alrendszer változásait érintő pull kérésének elutasítását, mert ez a változás összeomlást okozott, amikor a kernelt Rust támogatással próbálták összeállítani. Az összeomlást az okozta, hogy a Rust kódot karbantartók nem adták hozzá a szükséges változásokat a bindgen generátorhoz. Így a memóriakezelő alrendszert karbantartó szakemberek a változás előmozdítása során, amely teljes mértékben helyes a C nyelv és a kernel szempontjából, a kernel egy opcionális külső kódjától függtek, amelyért mások felelnek.

A DMA hívások feletti kód elutasítása a Rust for Linux projekt fejlesztőit zsákutcába jutatta, mivel az ilyen átfedések nélkül nehéz lesz teljes értékű meghajtók fejlesztése Rust nyelven. Hector Martin, aki az Apple ARM chipek támogatásáért felelős kód karbantartója és az Ashai Linux projekt vezetője, a konfliktus megoldásának egyik lehetőségeként azt javasolta, hogy a Rust-overlap elfogadását közvetlenül Linus Torvaldsnál kérjék, kikerülve a DMA alrendszert karbantartó szakembereket. Ha Linus egy ilyen hierarchiával és a megszokott gyakorlattal való megsértésre igent mond, az válsághelyzetet idézhet elő a kernel fejlesztésének irányításában, míg ha elutasítja, megállítja a Rust előrehaladását a kernelben.

Hector említette Christoph felelősségre vonását a magatartási kódex megsértése miatt, amiért Christoph a Rust-t rákos daganatként hasonlította össze. Ezen kívül Hector megjegyezte, hogy belefáradt a bürokratikus akadályokba, nem hajlandó egyszerűen bízni a meglévő folyamatokban, és célzott a közösségi média bevonására. Dave Airlie, a DRM alrendszer karbantartója, azt tanácsolta, hogy ne feszítsék túl a konfliktust, és értsék meg, hogy a toxikus viselkedés mindkét fél részéről elfogadhatatlan, függetlenül attól, hogy a vita résztvevője igazságos vagy sem.

A vitához Linus Torvalds is csatlakozott, aki rámutatott, hogy a probléma talán Hectorban és abban a magabiztosságában rejlik, hogy tud valamit a többieknél jobban, nem pedig a jelenlegi kernelfejlesztési folyamatban, amely működik. A kernelfejlesztési folyamatnak vannak problémái, de ez az élet valósága – semmi sem tökéletes az életben. A közösségi médián keresztüli zaklatás csak elriasztja Linust attól, hogy bármilyen kapcsolatot ápoljon Hector megközelítésével. Linus számára a technikai viták és a javítások számítanak, nem a közösségi médián keresztüli nyomás.

Válaszként Hector kérvényezte, hogy távolítsák el őt az ARM/APPLE platform támogatói közül, mert elvesztette a hitet a kernelben alkalmazott fejlesztési folyamatban és a közösségi irányítás megközelítésében. Azt is kijelentette, hogy az ARM/Apple platform fejlesztése folytatódik a Linux fő kernelén kívül. Az ARM/Apple platformnak a kernelben maradt még egy karbantartója – Sven Peter, aki szándékozik folytatni a platform támogatását a kernelben.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster