Egy nyílt forráskódú projekt azt ígéri, hogy a Linux ezer év múltán is futtatható marad a megoldásukkal

Képzeljünk el egy számítógépet, amely egyetlen alapműveletre épül: két szám különbségét számolja ki, majd az eredmény alapján dönti el a következő lépést. Nincsenek benne tucatnyi utasításból álló parancskészletek, bonyolult processzorlogikák vagy hagyományos architekturális rétegek, csak ez az egy végletekig leegyszerűsített művelet. Erre a szokatlanul minimalista alapra épül az Eternal nevű nyílt forráskódú kezdeményezés, amely azt célozza, hogy a mai szoftverek (például egy Linux rendszer) akár évszázadokkal később, szélsőséges esetben egy teljes évezred múlva is futtathatók maradjanak.

Egy nyílt forráskódú projekt azt ígéri, hogy a Linux ezer év múltán is futtatható marad a megoldásukkal

A projekt neve onnan ered, hogy alkotói a szoftvermegőrzés klasszikus módszereit, ide értve az archiválást, forráskód-tükrözést, emulátorokat, kompatibilitási rétegeket, nem tartják igazán tartósnak. Ezek mind újabb és újabb függőségeket hoznak létre: egy program működéséhez kell egy operációs rendszer, ahhoz könyvtárak, fordítóeszközök, sajátos hardveres viselkedés, firmware, fájlformátumok és számtalan, a saját korára jellemző hallgatólagos feltételezés. Ha pusztán a bináris fájlt mentjük el, az önmagában kevés; ha emulátort is hozzácsomagolunk, azzal csak egy újabb bonyolult rendszert hagyunk az utókorra, amit majd szintén meg kell érteni és működtetni.

Az Eternal ezt a láncolatot próbálja megszakítani egy radikálisan más megközelítéssel: ahelyett, hogy a jövő mérnökeinek a teljes mai hardvert kellene rekonstruálniuk, egy olyan minimalista „gépet” ad a kezükbe, amelynek teljes specifikációja néhány tucat sorban leírható. A fejlesztők szerint a referencia-implementáció pszeudokódban körülbelül 30 sornyi, a hivatalos C nyelvű változat pedig nagyjából 50 sorból áll. Ez gyakorlatilag bármilyen jövőbeli rendszerre könnyen átültethető, legalábbis a fejlesztők ígérete szerint.

Ezt az egyetlen utasítást Subleq-nek nevezik, mely a „subtract and branch if less than or equal to zero” kifejezés rövidítése, a projekt pedig ennek egy továbbfejlesztett verzióját, a Subleq+-t építette be a gyakorlati megvalósításba. A legmeglepőbb mégis az, hogy ebből a rendkívül szűkös alapból egy teljesen működőképes Linux-rendszer kerekedett ki. Ehhez a fejlesztők kialakítottak egy LLVM-re épülő fordítói réteget, átültették rá a Linux kernelt, hozzáillesztettek egy C/C++ futtatókörnyezetet, beemelték a könnyűsúlyú uClibc-ng könyvtárat, valamint a BusyBox eszközcsomagot — mindezt pedig egy saját fejlesztésű virtuális géppel fogták össze. Így állt elő egy önállóan futtatható Linux-csomag, amely ezen a parányi virtuális gépen belül indul el, és működőképes parancssori felületet biztosít a felhasználónak.

Ezeket az önmagukban zárt, mindent egy csomagba sűrítő egységeket a projekt „kapszulának” nevezi: egy kapszula magában foglalja az operációs rendszert, a hozzá szükséges könyvtárakat, az alkalmazásokat és az összes függőséget, így a futtatáshoz semmi másra nincs szükség, csak magára az Eternal virtuális gépre. A GitHub-tárolóban részletes, lépésenkénti útmutató olvasható arról, hogyan kell felépíteni egy ilyen virtuális gépet, hogyan kell kicsomagolni és elindítani egy Linux boot image-et, majd hogyan futtathatók szoftverek a rendszeren belül. (akár DOOM is, melyre a dokumentáció külön kitér.)

Fontos leszögezni: az Eternal nem akar hétköznapi értelemben vett Linux-disztribúció lenni, és nem versenyez olyan eszközökkel, mint a QEMU, nem alternatívája egy modern asztali rendszernek, és nem praktikus módja a mai programok futtatásának. Ami igazán értékessé teszi, az a felvetett kérdés maga: vajon mennyire kellene leegyszerűsíteni egy számítógépet ahhoz, hogy a rajta futó szoftverek ne csak évtizedekig, hanem évszázadokon át megőrizhetők maradjanak?

Van ebben egy érdekes ellentmondás is. A Linux fejlődése jellemzően az egyre összetettebb hardverek irányába mutat, a szerverektől a felhőrendszereken át a beágyazott eszközökig. Az Eternal pont az ellenkező irányba indul el: visszanyúl egy szinte ősi egyszerűségű géphez, és csak annyi réteget épít rá, amennyi feltétlenül szükséges ahhoz, hogy a Linux mégis életre keljen rajta.

Egyelőre nyitott kérdés, hogy ez a kísérlet túlnő-e majd önmagán. A projekt meglehetősen új, a célkitűzés viszont kifejezetten merész. Azt pedig, hogy egy ilyen szoftverkapszula tényleg működőképes marad-e ezer évvel később is, jelenleg senki sem tudja garantálni. Nyílt forráskódú gondolatkísérletként ugyanakkor mindenképp érdemes felfigyelni rá: vajon a távoli jövő embere, ha mindössze egy kapszulát, egy rövid gépleírást és a kivonás műveletének ismeretét örökölné, képes lenne-e újra életre kelteni mai digitális világunk egy darabkáját?

A részletek a projekt GitHub-tárolójában érhetők el.