Hirdetés

Mi az a Gemini hálózat?

A Gemini projekt egy új, szöveges tartalmakra koncentráló hálózat.

Bár ez egy nagyjából pontos definíció, de ebből még nem derül ki, hogyan néz ki mindez a gyakorlatban, hogyan működik, hogyan használjuk?
Nos, képzeld el, hogy a world wide web első napjait írjuk. A mérnökök épp most csatlakoztatták a számítógéped a hálózatra, és te, életedben előszö, elkezded használni a webet. Nem hogy Facebook és Youtube, Javascript és CSS nincs, de még képeket sem látsz sehol sem az éppen születőben lévő weben. Szöveges tartalmak mindenhol...
A Gemini hálózat ("geminispace") valami egészen hasonló élményt nyújt. Úgy is gondolhatsz a Geminire, mint egy interaktív multimédiás tartalmak, reklámok, felugró ablakok és szkriptek nélküli webre, bár a projekt céljai közt sosem szerepelt a web leváltása, inkább egyfajta pehelysúlyú alternatíva szeretne lenni. Ahogy a fejlesztők fogalmaznak, a Gemini "nehezebb, mint a Gopher, de könnyebb, mint a web". A szinte kizárólag nyers szöveges tartalom miatt a Gemini oldalak betöltésre rendkívül gyors, a Gemini szerverek pedig igen alacsony erőforrásokkal is beérik.


A geminiquickst.art kapszula a Lagrange böngészőből nézve...

A projekt alapjait 2019-ben rakta le egy SolderPunk nevű fejlesztő. A munkálatok azóta egy lazán kapcsolódó közösség keretein belül folynak, bár a fejlesztés vezetője még mindig SolderPunk. A Gemini név a NASA ugyanezen nevű űrrepüléső projektjéből származik.
Az indulás óta a Gemini elég szép pályát futott be. 2021 év eleji adatok szerint 750 oldal (a Gemini terminológiájában az oldalt "kapszulának" is nevezik), 500 domain, 600 IP cím, és 200 000 ismert URL létezik a Gemini hálózatoában. Az oldalak ("kapszulák"), domainek és IP címek száma azért nem egyezik, mert egy IP címen elérhető hoszt több oldalt is képes kiszolgálni. Ha hihetünk a bortzmeyer.org statisztikáinak, akkor e cikk írásakor 2170 Gemini kapszula létezik, amiből 1806 érhető el (a többi valamilyen hibára fut).

De hogy is néz ki a Gemini hálózata a gyakorlatban?

A felépítése nagyban hasonlít a webre. Lelkes felhasználók Gemini szervereket üzemeltetnek világszerte, amikhez ugyanúgy URL vagy IP cím alapján kapcsolódhatunk, mint web esetén. A címfeloldás a már jól ismert DNS rendszer segítségével megy végbe, a protokoll megnevezése azonban nem http vagy https, hanem gemini. Egy Gemini cím felépítése a következőképpen fest: gemini://gemini.circumlunar.space
Mivel a webböngészők nem kompatibilisek a Gemini hálózattal, ezért ha meg szeretnénk tekinteni a Gemini oldalakat, be kell szereznünk egy arra alkalmas böngészőt. Szerencsére ebből a szempontból nincs nehéz dolgunk, hiszen jelenleg közel 50 Gemini kliens létezik. Ugyanúgy találunk böngészőt az asztali operációs rendszerekre (Windows, Linux, MacOS), mint ahogy a mobiloperációs rendszerekre is (Android, iOS). Ezek közül némelyik csupán primitív, parancssoros működést teszt lehetővé (ami azonban bizonyos esetekben igenis jól jöhet), mások viszont mindennapos használatra tervezett, sok funkcióval ellátott, grafikus böngészők.
Néhány ajánlott Gemini böngésző:
- Lagrange, egy C-ben írt, multiplatform (Windows/Linux/MacOS, a Linux verziót érdemesebb flatpak-ból telepíteni) darab, egyedi "retro" felülettel, sok beállítási és témázási lehetőséggel. Ez volt az első böngésző, amivel felléptem a Geminire, és nálam annyira bevált, hogy a többit épp csak futólag próbáltam ki
- GemiNaut, C#-ban írva, a Windows megjelenéséhez jobban illeszkedő, ám kevesebb funkcióval rendelkező böngésző
- Kristall, C++ és QT felhasználásával készített böngésző
- Castor, Rustban írva GTK felhasználásával, klasszikus CDE felületi elemeket használva


Szintén a geminiquickst.art, a Kristall böngészőből nézve

Milyen tartalom található a hálózaton? Kik használják?

Hirdetés

Szerintem nem túlzás azt kijelenteni, hogy a Gemini hálózatot geekek hozták létre, geekek üzemeltetik, és elsősorban geekek használják. Az egész hálózatot átjárja a számítástechnikai korábbi évtizedeiből merítkező retro nosztalgia, a cyberpunk és sci-fi elemeket ötvözö, ASCII artokkal dúsított életérzés, és az egyszerű, "emberközeli", könnyen átlátható informatika iránti vágyakozás. A "kapszulák" témái ugyanakkor egészen változatosak, találunk mindenféle oldalakat az politikától kezdve, a recepteken keresztül a DIY dolgokig bezárólag.
Nem meglepő módon az oldalak nyelve szinte kizárólag az angol. A magyar nyelvű oldalakat egy kezemen meg tudom számolni, és ezt szó szerint kell érteni.

Biztonság

A felhasználói biztonság szempontjából két fontos tényező kell megemlíteni. Először is azt, hogy a Gemini hálózatban kötelező a TLS titkosítás használata a klien-szerver kommunikáció folyamán. Amelyik oldalnál esetleg tanúsítvány probléma lépne fel, ott a Gemini kliens figyelmeztet.
A másik pedig az, hogy a rendszer lehetőséget sem ad semmiféle süti, Etag, szkript vagy hasonló eszköz használatára, így nem kell aggódnunk a követő sütik, szkriptek, felugró ablakok miatt.

A Gemini átviteli protokollja

A Gemini protokollja ugyanúgy kérés-válasz alapon működik, mint a HTTP. Jelentős különbség a kettő közt, hogy míg a HTTP protokoll egy összetett és folyamatosan bővülő nyelv, addig a Gemini protokollja egyszerű, mint a faék. Egy átlagos HTTP kérésben olyan mezőket találunk, mint például User-Agent, Cache-Control, Cookies, stb. A Gemini kérés formátuma ezzel szemben semmi mást nem tartalmaz, mint egy URL címet, és egy <CR><LF> lezáró karakterpárt:
gemini://gemini.circumlunar.space<CR><LF>

A szerver által küldött válaszfejléc pedig így néz ki:
<STATUS><SPACE><META><CR><LF>

Ahol <STATUS> egy státuszkód (mint például sikeres lekérés, átirányítás, hiba...), <SPACE> egy szóköz (0x20 karakter), <META> egy UTF-8 kódolású szöveg, mely a <STATUS> értékétől függő, tájékoztató jellegű szöveg, majd következik egy <CR><LF> lezáró karakterpár, végül pedig az oldalt felépítő nyers tartalom, amely biztosan nincs tömörítve, nincs kódolva, nincs csonkolva, hiszen ezekre a protokoll nem biztosít lehetőséget.
Egyetlen Gemini oldal egyetlen lekérést indíthat a szerver felé, tehát nem lehetséges az, mint HTML esetén, hogy először betöltődik az index.html, az hivatkozik például a style.css-re ami ezután szintén letöltődik, majd jön egy kis Javascript, képek, videók, egy-egy AJAX lekérdezés...
Tehát a Gemini protokollja csupán ennyi, nem több, és soha nem is lesz több. Nem bővíthető, nem lehet újabb fejléceket hozzáadni, ugyanis a fejlesztők - elkerülendő azt, hogy a Gemini a web sorsára jutva, hasonlóan szerteágazó és komplex monstrum legyen - végleg lezárták a protokoll fejlesztését. Az már "kész van", ennél készebb már soha nem lesz. Éppen ezért van az, hogy sehol sem találkozunk egyetlen verziószámmal sem.
Ettől függetlenül természetesen, mivel a Gemini nyílt forráskódú, bárki forkolhat magának egy "saját" Geminit, de az már nem "Gemini" lesz.
Annak oka pedig, hogy nem szerepel a protokollban Content-Length vagy hasonló célú, az adatátviteli méretet tartalmazó fejléc az, hogy nincs rá szükség. Ugyanis minden egyes Gemini lekérdezés egy szerver felé irányuló kapcsolat nyitásával kezdődik, az adatátvitel végeztével pedig a szerver rögtön le is zárja a kapcsolatot. Sajnos ez egyben azt is eredményezi, hogy a kliens nem képes előrejelezni a válaszul kapott adat mennyiségét, így nagyobb fájlok letöltésére nem igazán alkalmas.

A Gemini jelölőnyelve ("gemtext")

Ezek után talán nem meglepő, hogy a Gemini nem HTML-t vagy valamely SGML származékot használ az oldalak leírására.
A rendszer ugyanis egy nagyon egyszerű jelölőnyelvet alkalmaz, a "gemtext"-et (MIME típusa a text/gemini), melynek legkisebb alapegysége a sor. Hogy az egy sorban lévő szövegrész hogyan fog megjelenni a kliensen, azt a sor elején vagy valamely előző sorban meghatározott jelölő határozza meg.
Ha például egy => jelet rakunk a sor elejére, a sorban lévő szöveg link lesz, melyet egy szóközzel elválasztva követhet a link leírása. A ``` karaktereket (backtick karakter) követő sorok előformázott szövegként fognak megjelenni, amely rendszerint fix szélességű (monotype) betűkészlettel renderelődik. Újabb ``` karakterek jelzik az előformázott szövegtömb végét.
Ez a három sortípus alkotja a Gemini jelölőnyelvének alapkészletét (basic line types). Létezik továbbá három másik sortípus, amelyek a további sortípusok közé tartozik, ezek a következők:
Kettőskereszt jelzi a címsort, melyből kirakhatunk egyet, kettőt vagy hármat, attól függően, hogy elsődleges, másodlagos vagy harmadlagos címsort szeretnék készíteni. A csillaggal kezdődő sorok egy rendezetlen listát jelölnek, míg a jobbra néző relációs jellel ("kacsacsőr") kezdődő sorok idézetet jelentenek.
Végül pedig az 1-es státuszkóddal indított lekérdezések egysoros felhasználói adatbevitelt várnak válaszul. Ekkor megjelenik egy kis ablakocska, benne a <META> után megadott szöveggel, és lehetőségünk van egy rövidke választ megadni.

Felmerülhet a kérdés, hogy ilyen szűk lehetőségek mellett mégis hogyan lehet a Gemini oldalakat designolni. Az egyszerű válasz az, hogy sehogy. Egyszerűen nincs rá mód.
A jelölőnyelv még csak képek beszúrását sem teszi lehetővé, bár lehetőség van képeket linkelni - amit egyes böngészők képesek az oldalba ágyazva megjeleníteni, kattintásra pedig új lapon megnyitni -, de a szabvány a megjelenítésről nem rendelkezik.
Ebből adódóan minden Gemini oldal ugyanúgy néz ki, azaz teljes mértékben a kliens (böngésző) dönti el, hogy miképp rendereli az oldalt. Ezt kihasználva, a legtöbb grafikus kliensben lehetőségünk van testreszabni a színeket, a betűk típusát, méretét, sorközöket, és így tovább.


Ismét a geminiquickst.art, most már a GemiNaut böngészőből - így néz ki egy átlagos Gemini oldal, és tulajdonképpen minden Gemini oldal így néz ki...

Szerveroldal, dinamikus tartalom

A Gemini oldalak kiszolgálásához Gemini szerverre van szükség. Jelenleg kéttucat Gemini szerverprogram létezik, többségük a webkiszolgálóknál megszokott funkciókat is nyújtanak, mint például virtuális hosztok kezelése, CGI/FastCGI támogatás, reverse proxying, átirányítások...
Egy webkiszolgáló üzemeltetésében jártas szakember számára egy Gemini szerver beüzemelése nem jelent különösebb kihívást, nagyjából pár óra alatt megoldható. Ezután pedig CGI segítségével akár dinamikus oldalakat is kiszolgálhatunk. A Gemini szerverek az 1965-ös TCP portot használják, mely utalás az 1965-ben indított Gemini-3 küldetésre.
A Gemini hálózatán böngészve találhatunk linkgyűjtő oldalakat, feed aggregátort, Twitter-szerű microblogging szolgáltatást, a webes blogokhoz hasonló szolgáltatásokat ("gemlog"), sőt, még szöveg alapú közösségi oldalt is.

Néhány kapszula a gemini space-ből képekben:


station.martinrue.com, microblogging szolgáltatás


rawtext.club, egy szöveges alapú közösségi oldal


cosmic.voyage, sci-fi témájú írói közösség


monmac.flounder.online, egy a nem angol nyelvű kapszulák közül


botond.online, a magyar Gemini kapszulák gyűjtőhelye

Végül pedig a saját Gemini oldalam, ahol megtalálod ugyanezt a leírást: gemini://hyperstorm.ipdns.hu

Még van hozzászólás! Tovább