Mathieu Desnoyers, az LTTng (Linux Trace Toolkit Next Generation) fejlesztője újraindította a projekt kernelbe történő integrálásának ügyét, miután az elmúlt húsz évben többször is kudarcba fulladtak az upstreaming próbálkozások. A legfrissebb javaslat egy külön LTTng alrendszer létrehozására vonatkozik a kernel fő ágában, amely leváltaná a jelenleg out-of-tree (OOT) modulként fejlesztett kódot. A cél egy olyan állapot elérése, amelyben a jelenlegi felhasználók változtatás nélkül használhatnák az eszközt a meglévő felhasználói interfészekkel. Desnoyers az LKML levelezőlistán osztotta meg kezdeményezését, és számos alternatív megközelítést vázolt fel, köztük a teljes forráskód tömbös beolvasztását, szakaszos újraírást, staging ágon keresztüli bevezetést vagy részleges beolvasztást.
Tartalomjegyzék

Nem ez volt az első kísérlet az integrációra
A projekt története 2005-re nyúlik vissza, és azóta különböző formákban próbálták integrálni a mainline kernelbe. Kezdetben patch sorozatként létezett, majd 2010-től külön modulként fejlődött tovább. Desnoyers az idők során több technológiával is hozzájárult a kernel tracer ökoszisztémájához, beleértve a tracepointokat, a rseq és membarrier rendszerhívásokat, valamint a kernelmarker infrastruktúrát. Ennek ellenére az LTTng integrációját rendre elutasították, részben azért, mert a kódbázis mérete (kb. 75 ezer sor) túl nagy feladatot jelentett volna a karbantartók számára, másrészt azért, mert a kernel fejlesztői közösség már elkötelezte magát az ftrace és perf alapú megoldások mellett.
Linus Torvalds válasza: nincs helye kétféle tracer modellnek
Linus Torvalds, a Linux kernel vezető fejlesztője és karbantartója gyorsan reagált Desnoyers javaslatára, és egyértelműen elutasította a tömbös beolvasztás ötletét. Torvalds szerint a már létező kernel tracing infrastruktúra éppen azért kerülhetett be a mainline-ba, mert az fokozatosan, közösségi együttműködéssel épült ki. Ezzel szemben egy teljesen párhuzamos rendszer beolvasztása értelmetlen lenne, különösen úgy, hogy az elmúlt két évtizedben nem sikerült egységesíteni az eltérő tracer architektúrákat.
Őszintén szólva, nem látom értelmét. A jelenlegi tracing infrastruktúra azért kerülhetett be, mert az emberek hajlandóak voltak azt fokozatosan beépíteni. Abban reménykedtem, hogy idővel sikerül majd egyesíteni a különböző gyűrűpuffer-megvalósításokat és hasonlókat. Ez eredetileg egy közös célként merült fel, de most, évtizedekkel később még mindig nem történt meg. És őszintén? Nem érdekel, hogy két külön tracer modell legyen. Ha kell a második, az maradjon out-of-tree. Ennyire egyszerű.
Mert ha az emberek ennyi idő alatt sem tudtak megállapodni egy közös modellben, akkor semmi értelme fenntartani két rendszert párhuzamosan a mainline kernelben. Szóval számomra ez a vita nem is vita. Vagy van lehetőség közös infrastruktúrával, fokozatosan összeolvasztva dolgozni, vagy nincs. Nem lesz két különálló gyűrűpuffer. Nem lesz két különálló trace interfész. És nagyon úgy tűnik – a múlt alapján –, hogy ez az egységesítés sosem fog megtörténni.
Majd egy későbbi válaszában egyenesen így fogalmazott:
Ez nem egy olyan fogadás, amit bevállalnék. Ha az emberek húsz év alatt nem tudták ezt egységesíteni, nem fogom elfogadni azt az érvet, hogy majd ha bekerül, akkor összeforr. Őszintén szólva, ez nekem totál tündérmesének hangzik: eljött a hercegnő, megcsókolta a varangyot, aki átváltozott gyönyörű királyfivá, és boldogan éltek, míg meg nem haltak. Szóval nem. Nem hiszek a mesékben. Különösen nem, amikor két évtizeden át semmi ilyesmi nem történt. Ha valaki képes ezt egységesíteni és fokozatosan integrálni, az más. Addig viszont csak kitalációról beszélünk. Mutasd a kódot.
Desnoyers ugyan részletesen feltérképezte az upstream integráció lehetséges módjait – legyen szó staging ágon való bevezetésről, a backward kompatibilitási réteg eltávolításáról, vagy akár az LTTng modulok csak részleges beemeléséről –, de a kezdeményezés jövője továbbra is kétséges. Linus Torvalds nyilatkozatai alapján a közösség egyedüli esélye az LTTng upstreambe kerülésére az lehet, ha az infrastruktúrát valóban fokozatosan, közösen fejlesztik és integrálják a meglévő tracer rendszerekkel. Addig azonban a projekt minden bizonnyal marad az out-of-tree fejlesztési modell keretei között.

