A hazai fejlesztőkkel már nem először készül interjú. Vajna Miklóssal, Nagy Róberttel korábban készültek interjúk, valamint a Novell gyakornoki programjában részt vevő két hallgatóval, Jenei Gáborral és Rabi Péterrel. Ezúttal az FSF.hu ösztöndíjasával, Zolnai Tamással készített interjú olvasható.
– Mesélnél magadról? Mi az érdeklődési területed, most éppen mivel foglalkozol és hol dolgozol, merre tanulsz, mit csinálsz?
Talán ismered azt a magyar népmesét, melyben van egy ördög, aki minden hatalmát elveszíti, ha kitudódik a neve. Ez a kis ördög jut eszembe erről a kérdésről, de talán rám nincs ilyen rossz hatással, ha elárulok néhány dolgot magamról… De félre a tréfával! Ha röviden jellemeznem kéne azt az embert, akivel ez az interjú készül, akkor egyszerűen egy informatikus képét kéne felvázolnom. Az érdekes ebben az informatikusban, konkrétabban programozóban, az hogy míg a programozáshoz jól ért (ezt mondjuk az ösztöndíjak elnyeréséből következtethetem), addig a hétköznapi informatikához nem ért jobban, mint egy egyszeri felhasználó. Mindig mosolygom magamban azokon a komikus helyzeteken, melyekhez ez az ellentét vezet.
Egyébként programozói tudásomat nagy részben az ELTE-én sajátítottam el az előző három évben, habár már előbb is kaptam némi ízelítőt az algoritmikus gondolkodásból. Jelenleg az informatika területén belül főleg a LibreOffice fejlesztésén tevékenykedem. Továbbá komolyabban még a szakdolgozati témámmal foglalkozom (ez ideiglenesen szünetel), ami a CYK algoritmus hatékonyságának növelésével kapcsolatos.
– Informatikán kívül mással is foglalkozol?
Igen, néha kedvem támad belekóstolni más tudományágakba is. Az előző félévben például szociológiával foglalkoztam egy kicsit egy egyetemi kurzus keretében. A konkrét téma, amihez szerencsém volt, a nemek szerepe a társadalomban, a nemi sztereotípiák és azok hatása az egyénre. Alapvetően nem szakmai szempontok alapján választottam ezt a területet, hanem ez a téma nagy részben személyesen is érint. A személyes érintettségből, amit itt meg is említhetek, az az egyén szabadságába vetett hitem, mely élesen ellentétben áll a nemi sztereotípiák hordozta elvárásokkal, kötöttségekkel. Amit igazán érdekesnek találtam ebben a témakörben, az az emberi társadalom azon képessége, mellyel megteremti saját valóságát.
– Mikor ismerkedtél meg a szabad szoftverekkel? Mióta foglalkozol a LibreOffice fejlesztésével? Mióta ismered, mikor és hol hallottál róla először?
Három éve foglalkozom behatóbban informatikával és azt is főleg egyetemi keretek között, így talán nem annyira meglepő, hogy gyakorlati tapasztalatom szabad szoftverek területén igen kevés volt, mielőtt a LibreOffice fejlesztésébe kezdtem volna. A LibreOffice-szal tavaly nyáron (2012) a novelles szakmai gyakorlaton ismerkedtem meg, Tímár András mentorálása alatt. Azóta foglalkozom vele, fejlesztgetem, próbálom felmérni a benne rejlő lehetőségeket. Amit igazán kedvelek a LibreOffice-ban az az, hogy a programkódban elég intuitíven el lehet igazodni, ami egyrészt az érthető elnevezéseknek, másrészt a különböző kódolási konvencióknak köszönhető. Így elég gyorsan fel lehet mérni egy adott programozási probléma esetén az egyes megoldási lehetőségeket.
– Mondanál egy konkrét problémát és egy „konvenciót”?
Egy igen gyakran használt programozási megoldás például a modell-nézet-vezérlő szétválasztás, mely a felhasználói felület megvalósítására használt programozási minta. Ezt többféleképpen is meg lehet oldani. A LibreOffice-ban ez a következőképp néz ki. A nézet írja le egy adott nagyobb struktúra (ablak, eszköztár, felugró menü) alapvető kinézetét, az azon szereplő elemeket (gombok, jelölőnégyzetek stb.) és azok elrendezését. A modell írja le az így elhelyezett elemek működését és a különböző felhasználói eseményekre (egérkattintás, szöveg begépelése) adandó válaszokat. A vezérlő pedig központilag irányítja az előbb csak nagyobb struktúrának nevezett elemek működését (megnyitás, bezárás, állapotok eltárolása).
Ilyen megoldás esetén, különböző problémákkal a forráskód különböző részeit lehet felkeresni. Ha például egy beviteli mező méretét szeretném megnövelni, akkor a nézetet leíró fájlokat keressem. Ha a mezőbe begépelhető adatok típusát (szám, dátum, egyszerű szöveg) szeretném meghatározni, akkor a modell után kutatok. Ha pedig egy gomb megnyomására vagy egy menüpont kiválasztására szeretném, hogy megnyíljon egy ablak, akkor azt egy vezérlő osztályt felhasználva tehetem meg. Ezzel lecsökken a kód megértésének ideje, egyrészről mivel a forráskód egy kisebb részét kell csak átlátni, másrészről mert az is jobban strukturált lesz.
– Térjünk rá az ösztöndíjadra! Hogyan nyerted el az FSF.hu ösztöndíját és milyen célra? Hány hónapra szólt az ösztöndíj?
Ha jól tudom, ebben az évben nem volt pályázati kiírás és ezért én is egyéni úton kaptam meg ezt az ösztöndíjat, András ajánlása alapján. Az ösztöndíj nyolc hónapra szólt és annak fejében csupán a LibreOffice-t kellett fejlesztenem, ahogy azt előtte is tettem.
Ez nagyrészt a lokalizációt kezelő infrastruktúra megújítását jelentette [a fejlesztések összefoglaló beszámolói elérhetőek az FSF.hu blogján – a szerk.], amit már a szakmai gyakorlat idején elkezdtem, másrészről az Alapítvány is a figyelmembe ajánlott néhány fejlesztési ötletet, melyek a középiskolások számára tennék használhatóbbá a LibreOffice adatbázis-kezelőjét. Ugyanis a magyar nyelvű informatikaérettségi feladatai között vannak olyanok, melyek megoldásához a LibreOffice-ban csak az SQL nézetben van lehetőség, míg egy érettségizőtől általában nem várható el annak ismerete.
– Konkrétan milyen Base funkciókról van szó?
Az egyik funkció az SQL limit kulcsszavához kötődik. Ezzel a kulcsszóval lehet egy felső korlátot adni a lekérdezés eredményeként visszatérő sorok számára. Eddig ezt csak az SQL nézetben lehetett megoldani, de a 4.1-es verzióban már tervező nézetben is elérhetővé vált ez a funkció egy számok bevitelére alkalmas mező képében.
Egy másik funkció, amiről még csak tervek születtek, a LibreOffice táblázatkezelője által támogatott fájlformátumokból való közvetlen táblaimportálás. Ennek megoldása egy kicsit elhúzódik a Google Summer of Code-os projektem miatt, de remélhetőleg a közeljövőben sikerül azt is megoldanom.
– Azok számára, akik nem követték a beszámolóidat, elmondanád – röviden –, hogy mit is végeztél a lokalizációval kapcsolatban?
Az elsődleges feladat, amit a lokalizációval kapcsolatban elvégeztem, az egy régi, elavult fájlformátum (SDF) kiküszöbölése volt. Ez a régi fájlformátum csak belsőleg volt használatos, maguk a fordítások már az új formátumú fájlokban tárolódtak (PO). Ez a belső használat annyit jelentett, hogy a tárolt fordítások átkonvertálódtak a régi formátumba és utána kerültek be a forrásfájlokba. Ez egyrészről erőforrás-igényes volt, másrészről a fejlesztés szempontjából is sok kényelmetlenséggel járt.
Miután sikerült nagy részben megoldanom ezt a problémát (ez a 4.0-s verzióba került be), még sok olyan elgondolás maradt a kódban, melyek közvetlenül vagy közvetetten a régi formátumra támaszkodtak (feleslegessé vált parancssori paraméterek, kihasználatlan függvények, régi sztringátalakítási megoldások). Valójában még jó pár hónap eltelt, míg tényleg azt lehetett mondani, hogy az SDF eltűnt a kódból. Emellett, ahogy egyre jobban kezdtem kiismerni a kódot, egyre több más elavult megoldásra is ráakadtam, melyeket ugyanazzal a lendülettel töröltem. Mintha csak egy „nyári nagy takarítást” tartottunk volna. Ezek a kódtisztítások főleg az átláthatóságot szolgálták, de részben a hatékonyságot is növelték.
– Ki segítette a munkádat?
Aki a legnagyobb részben hozzájárult ahhoz, hogy be tudjak kapcsolódni a LibreOffice fejlesztésébe, az Tímár András. Ő volt a mentorom a szakmai gyakorlat alatt és ösztöndíjas hónapjaimban szintén. Mivel legnagyobb részt a lokalizációt végző modullal foglalkoztam, ami András területe, ezért az azzal kapcsolatos problémákkal is őt kereshettem meg, de általában is sokat segített abban, hogy le tudjam gyűrni a kezdeti nehézségeket, és hogy a gyakorlat után is tevékeny tagja maradhassak a LibreOffice fejlesztői közösségének. Az FSF.hu-s ösztöndíj lehetőségére is ő hívta fel a figyelmemet, ahogy a Google Summer of Code-ra is, így lehetővé téve, hogy hosszabb távon, nagyobb erőbefektetéssel is részt vehessek a projektben.
Andráson kívül még sok segítséget jelent a LibreOffice fejlesztői csapata. Általában a saját utamat járom fejlesztés során, és nem sokat kérdezek, de ha mégis felmerül valamilyen kérdés, akkor mindig választ kapok rá akár a levelező listán, akár az IRC-n teszem fel. Egyébként is elég sok visszajelzést és tanácsot kapok a munkámmal kapcsolatban, melyek egyrészről elősegítik új programozói megoldások megismerését, másrészről felhívják a figyelmem a forráskódban történő változásokra, melyek a saját fejlesztéseimet is érinthetik. Úgyhogy végül is a jövőben jobb lesz többet kérdezni.
– Milyen terveid ötleteid vannak a folytatást illetően? Folytatod-e a lokalizációval kapcsolatos munkát?
Azt nem tudom biztosan, hogy mikor lesz lehetőségem visszatérni a lokalizációhoz, de szeretnék még vele foglalkozni, van még pár ötletem. Néhány adatstruktúra például kevéssé illeszkedik az új fájlformátumra, így a kód jóval bonyolultabb, mint az alapvetően szükséges lenne, továbbá ezek a struktúrák némi felesleges memóriahasználattal is járnak. Ezen kívül többféle sztringátalakítás van az egyes programok forráskódjában, melyeket érdemes lenne kiváltani vagy hatékonyabban megoldani, ahol lehetséges. Továbbá általában lenne érdemes célirányosan, a hatékonyság szempontjából kényes területeket felkutatni és ott javítani. Ebben az irányban még kevés lépést tettem.
– Többször említetted a Google Summer of Code projektjét, amiben idén Te is részt veszel. Mesélnél arról, hogy milyen munkát végzel a projekt keretén belül, és hol lehet nyomon követni (pl. napló)?
A projekt, amivel indultam a karakterszegély megvalósítását tűzte ki célul. Jelenleg a Writerben bekezdések köré lehet szegélyt tenni, de a szöveg egy kiválasztott része, például egy szó köré nem. Kezdetben csak ennyiről volt szó, de a megvalósítás során találtam még néhány olyan speciális esetet, ahol igen jól jön a karakterszegély. Ilyen például a bekezdés elején található iniciálé, melynél elég természetesnek tűnik a keret használata, mellyel még jobban ki lehet emelni a kezdő betű(ke)t. Hasonlóan a bekezdések számozásánál is hasznos lehet olyan számok használata, melyek kerettel vannak ellátva. A jelenleg meglévő számozási sablonokat megnézve (‘1.’, ‘1)’, ‘(1)’) már csak a keret hiányzik a sor végéről. Ha minden a tervek szerint megy, akkor a 4.2-es verzióban ez a funkció már elérhető lesz.
A munkámról vezetek naplót, de az egyrészről angolul van, másrészről elég részletes, így aki nem ismeri a kódot, annak kevéssé jelent élvezetes olvasmányt. De vigasztalásképp megemlítem, hogy elég gyakran készítek képeket a már elért eredményekről, illetve a még fennálló problémákról, így némileg a laikus érdeklődők is betekinthetnek a munkámba.
– Köszönöm az interjút!
Gratulálok az eddigi munkádhoz! Köszönöm magam és mindazok nevében akik munkáját eredményesebbé teszik ezek a változtatások!
A Base csiszolására nagy szükség lenne, sajnos jómagam is pont emiatt írattam át MS office-ra a használt alkalmazást (gyorsabbnak tűnt összekattintgatni a megoldást, mint SQL parancsokat írni), annak ellenére, hogy a LibO-ban fényévekkel nagyobb gyakorlatom volt – a vegyes használatot meg nem engedték…
Köszönöm, szívesen dolgoztam egy kicsit a LibreOffice-on.
Igen, sajnálatos módon van néhány dolog, amiben a Base elmarad az Access-től.
Kis részben sikerült ezt a lemaradást csökkenteni, de a módosító lekérdezések
még mindig kivül esnek a grafikus felület hatókörén.
…mármint az érettségit 🙂 (ez kimaradt)