Miért őt keresem?
Több éve történt, hogy a nevével találkoztam, újszerű ötleteket kereső, azokat támogató szakértőként. Sok számomra ismerős alapelvet fogalmazott meg, a számítógépes programok és használóik viszonyáról, oktatásról, társadalomról. Azóta él bennem az a gondolat, hogy amikor a terveimmel eljutok egy megbeszélhető szintre, találkoznom kell vele.
Ki vagyok én?
Kedves Loránd, 38 éves programozó, programtervező.
Az egyetem elvégzése óta (másfél év polgári szolgálattól eltekintve) fejlesztőként dolgozom, egyebek mellett foglalkoztam adatbányászattal (a Cygron Kft. programozója voltam, amikor megnyertük a Comdex kiállítás "Best Personal Productivity Software" díját 1999-ben, és döntősök voltunk 2000-ben), kormányzati informatikai rendszereken (az Ulyssys Kft.-nél voltam vezető fejlesztő az EU csatlakozás idején, az én feladatom volt az ott fejlesztett mezőgazdasági rendszerek - Gazdanyilvántartás, IIER, ... - közös adminisztrációs rétegének megtervezése és kialakítása), telekommunikáció területén (a Westel / Magyar Telekom több párhuzamos platformon elérhető t-email rendszerének támogatása, továbbfejlesztése).
Ez utóbbit az iCode Kft. alkalmazottjaként végeztük, de a szerződésünket idén áprilissal felbontották. Jelenleg fizetés nélküli szabadságon vagyok, amit (háromgyermekes apaként) az év végéig engedhetek meg magamnak, utána munkahelyet kell keresnem. Ezt az időszakot arra használtam, illetve fogom használni, hogy immár egyetlen programozási feladatként magam elé tűzve azon a keretrendszeren dolgozom, amelyről beszélni szeretnék.
Mi a célja a beszélgetésnek?
Nem vagyok vállalkozó típus, nem vagyok üzletember, technológiai kérdésekkel szeretek és tudok foglalkozni. Amit tervezek, szintén nem egy üzleti vállalkozás, inkább társadalmi, esetleg oktatási szempontból lehet "nyereséges befektetés" véleményem szerint. Ettől függetlenül pénzt kell keresnem, és nagyon szeretnék ezzel a tervvel, fejlesztéssel nem csak a háttérben, vagy állástalan programozóként foglalkozni, ráadásul nem csak egyedül, hanem szakértő partnerekkel és szervezett keretek között, amennyiben ez lehetséges.
Bojár úrtól az alábbiakra szeretnék választ kapni:
- technológiai szempontból érdekesnek, értékesnek tartja-e a felvetést, tapasztalatai és ismeretei szerint van-e értelme komolyan foglalkozni vele?
- vállalkozóként, üzletemberként lát-e olyan területet, ahol az én elveim fenntartása mellett (a rendszer nyílt forrású, tulajdonosa a Hajnalvilág Alapítvány, használatának erős feltételei vannak) megélhetést biztosíthatna a számomra, miután a tartalékaimat idén felélem?
- az AIT keretében lehet-e mód valamilyen együttműködésre? Mit kellene ehhez nyújtanom?
Mi ez a rendszer?
A dokumentáció, amin most dolgozom, elérhető Wiki formátumban a http://dust-framework.org címen, de elég nagy lett mostanra, igyekszem pár mondatban összefoglalni.
Pályafutásom során előbb-utóbb ugyanott kötöttem ki: moduláris kereteket alkottam, hol adatelemző algoritmusok, hol felhasználói űrlapok, hol log rekord feldolgozó komponensek, hol telefonkészülék-paraméterek számára. Egyre erősebbé vált a meggyőződésem, hogy "nem jól programozunk": mérhetetlen sok az ismétlés, rossz a koordináció; az eszközeink gyakran hátráltatnak, mert függésbe kerülünk tőlük; sok olyan kód születik, amelyek helyett deklarációs eszközöket kellene használni (adat és folyamatleírások, felhasználói felületek); nincs szerves kapcsolat a rendszer tervezés és implementáció között (az UML ábrákból generált forráskódot és adatbázis scripteket nem tartom élő kapcsolatnak, inkább a betegség tünetének).
Az egész jelenlegi programozási környezetre úgy tekintek, mint egy házépítésre, ahol nincsenek építési, gépészeti, stb. szabványok és rétegek, minden gyártó csak a saját termékeivel, és azokkal is csak részlegesen (visszamenőleg nehézkesen) kompatibilis szolgáltatáskészlettel jelentkezik, amit nagyon sok helyi munkával lehet átmenetileg összerakni. Következésképpen a célom egy közös, szabványos környezet kialakítása, mint például az elektromos hálózat a kapcsolókkal, konnektorokkal, ismert feszültséggel.
Ehhez számos alapfogalmat és ezek működési elveit kellett kialakítani, amelyek lényegében különböző helyeken már ismert, használt gondolatok (entitás, aspektus, perzisztencia, tranzakció, kontextus, üzenet, példányosítás, ...) olyan struktúrája, amit eddig csak részben láttam megvalósulni (Java Spring, OSGI - objektumok, példányosítás; XAML / XUL / ufo - deklaratív GUI eszközök; aspektus-orientált programozás; OS feletti futtatókörnyezetek; üzenetkezelő keretek; ...). Ez a fogalmi váz lényegében összeállt.
A következő lépés a leprogramozása. Java környezetben a korábbi próbálkozások során sok tapasztalat és programkód született, ami elveiben újrahasználható, bár a cél egy C nyelvi implementáció. Első feladat annak az API-nak a kialakítása, amelyen keresztül gyakorlatilag minden komponensek közötti kommunikáció zajlik, egy igen szűk, tíz körüli függvényt tartalmazó belépési pont (komponens előhívás, üzenet küldés, fogadás, válasz). Második lépés az alap komponensek kialakítása (memóriakezelés, típuskezelés, ...), ami a futtató környezethez kell, utána pedig jönnek a magasabb szintű komponensek (file/stream, adatbázis, GUI, ... kezelés) prototípusai, majd a belőlük felépülő minta alkalmazások (az első cél a "lab": az a környezet, amiben maguk a komponensek megtervezhetők, a modulok kialakíthatók és az alkalmazás összeállítható).
Végeredményben a rendszer "önhordóvá" válik. Minden komponens adat és kommunikációs leírása objektumok segítségével történik, a futtató környezet ezt a leírást olvassa be, ennek segítségével kezeli az adatokat (elérés, továbbítás, megjelenítés, ...). A megírt, lefordított kódokat menet közben is képes betölteni a komponensekhez, így egy minimális "boot" program elindítása után, konfiguráció vagy közvetlen parancsok feldolgozásával alkalmas egy rá épülő tetszőleges rendszer futtatására, amennyiben a megfelelő leíró objektumokat és bináris állományokat eléri. Ezek az elvek részlegesen megvalósultak már korábbi fejlesztésekben, amiket meg tudok mutatni (forráskód, illetve többé-kevésbé működő alkalmazások formájában), bár nyilván nem álltak össze a megcélzott rendszerré.
-----------------
Igyekeztem a szerintem lényeges szempontokat viszonylag tömören összefoglalni. Amennyiben maradt volna olyan kérdés, amit a Bojár úrhoz való továbbítás, illetve a beszélgetés előtt tisztáznom kellene, kérem jelezze. Segítségét előre is köszönöm.
Erre személyes választ kaptam Bojár úrtól, aki arról biztosított, hogy véleménye szerint sikeres leszek.