Miért jó a nyílt forrás?!

Aki először találkozik az open-source világgal, az gyakran nem érti, hogy miért éri meg valakinek komoly energiát ölni valamibe, amit aztán ingyen, forráskóddal együtt odaad másoknak. Elsőre talán paradoxnak tűnik az állítás, pedig mindez hosszú távon remek üzlet lehet. A lényeg, hogy ésszel kell csinálni ...

De mi motivál valakit arra, hogy nyílt forrású szoftvert készítsen? Úgy gondolom, hogy sokszor az elsődleges ok egyáltalán nem anyagi jellegű. A fejlesztők nagy része ugyanis művészetnek tekinti a kódolást. Egy jól felépített, elmés megoldásokat tartalmazó, szépen megszerkesztett kód ugyanolyan esztétikai élményt jelent, mint egy festmény, egy vers, vagy éppen egy jó regény. És ahogyan a hagyományos értelemben vett művészt, úgy a fejlesztők nagy részét is hajtja egyfajta exhibicionizmus, hogy mindenkinek megmutassa milyen jó kódot írt, és vágyik mások elismerésére. Úgy gondolom, hogy legnagyobbrészt talán ez az alapvető mozgatórugója az open-source társadalomnak. Érdemes hozzátenni, hogy az így publikált szoftver rendkívül jó referencia is egyben, ha a fejlesztő állást keres. Hisz így a foglalkoztató cég egyből látja, hogy a leendő alkalmazott tud programozni, és mindezt magas szinten műveli. Egy fejlesztőt pedig leginkább talán az általa írt kód alapján ítélhetünk meg. E mellett az egészből lehet jó pénzt is csinálni, de talán ez az ami miatt a legtöbb nyílt forrású termék, mint amilyen a Linux operációs rendszer, vagy éppen a WordPress blog engine létrejött. E mellett persze sok más előnye is van a nyílt forráskódnak. De vajon mit érdemes nyílttá tenni?

Itt szerintem van egy nagyon egyszerű ökölszabály. Azt tegyük nyílttá, amit amúgy sem akarunk/tudunk eladni. Ilyen esetben ugyanis nem esünk el bevételtől, ugyanakkor számtalan előnyre tehetünk szert a nyíltságból adódóan. Sőt, hosszú távon még kereshetünk is azon, amin amúgy képtelenek lennénk keresni.

A legalapvetőbb ilyen eset, mikor szükségünk van valamire, amit nem akarunk eladni, csak használni szeretnénk. Ilyen lehet mondjuk egy blog engine, egy CMS rendszer, egy webbolt, vagy bármilyen más szoftver. Ilyen esetben megtehetjük, hogy elkészítjük a szoftvert, és csak mi használjuk. Ez igazából azért értelmetlen, mert ha nem akarjuk eladni, akkor miért ne publikáljuk? Veszíteni nem veszítünk rajta, viszont sokat nyerhetünk. Jó esély van például arra, hogy él még a világban pár fejlesztő, akiknek hasonló szoftverre van szüksége, és a helyett, hogy saját megoldást készítenének, a miénket kezdik el használni. Ha hibát találnak benne, azt kijavítják, vagy épp új funkcionalitást adnak a rendszerhez. Így mindössze azzal, hogy publikáltuk a szoftvert, lehetővé tettük azt, hogy az "önállóan" fejlődjön tovább. Megeshet, hogy a kis buta programunk valami hatalmas rendszerré növi ki magát. Ilyen volt például a Linux kernel, amit fejlesztője eredetileg azért készített, hogy kipróbálja a 386-os processzorok védett módjában rejlő lehetőségeket. Kezdetben egy nagyon primitív kis rendszermag volt, egy végzős egyetemista tákolmánya, de a nyílt forrásnak köszönhetően mostanra talán a legelterjedtebb operációs rendszernek mondhatjuk, tekintve, hogy erre épül például az összes Android telefon rendszere, de a szerverfarmok nagy része is Linux alapú rendszereket futtat. A Linux talán a legjobb példa, de számtalan egyéb olyan esetet lehetne felsorolni, ahol egy alapvetően primitív szoftverkezdeményből milliós felhasználóbázissal rendelkező nagy szoftver nőtte ki magát. Tulajdonképpen az összes ismert nyílt forrású program ilyen. A dolog szépsége, hogy mindenki csak egy kicsit tesz hozzá az egészhez, mégis sok kicsi sokra megy alapon ezek a rendszerek olyan fejlesztői bázissal rendelkeznek, amivel sokszor nagy multik is képtelenek versenyezni. De a fejlesztői bázis mellett a felhasználói bázis is nagyon értékes lehet, hiszen minden felhasználó egyben ingyenesen teszteli is a szoftvert, hibákat, biztonsági réseket tárhatnak fel, és jelezhetik a fejlesztőknek. Egy kereskedelmi szoftver esetén a tesztelés rengeteg energiát felemészt. Sokszor legalább olyan költséget jelent, mint magának a szoftvernek az elkészítése. Egy nyílt forrású szoftver esetén azonban ehhez is segítséget kapunk. Összességében tehát a nyílt forráskód egyfajta szabad evolúciót tesz lehetővé, ami a kereskedelmi rendszerek esetén nem valósulhat meg.

De nem csak teljes szoftverek esetén van értelme a forráskód nyílttá tételének. Kereskedelmi szoftvereknek is lehetnek olyan részei, alrendszerek, programkönyvtárak, amiknek érdemes megnyitni a forráskódját. Olyan esetben, ahol az adott programkönyvtárat nem szeretnénk közvetlenül eladni, érdemes lehet nyílt forrásúvá tenni azt. Ilyen esetben ugyanazok az előnyök, mint a teljes szoftver esetén. De ha egyetlen külső fejlesztő sem járul hozzá a fejlesztéshez, akkor is lehetnek előnyei a nyílt forráskódnak. Először is az ingyenességnél nem kell jobb promóció. Ha két ugyanolyan rendszerből létezik pénzes és ingyenes változat is, a felhasználók valószínűleg az ingyeneset fogják preferálni. Ugyanígy ha egy fejlesztőnek dönteni kell egy zárt és egy nyílt forráskódú rendszer mellett, valószínűleg a nyíltat fogja preferálni, aminek átlátja a működését, és amibe igény esetén belenyúlhat. De ha egy külső fejlesztő sem járul hozzá a szoftverünkhöz, akkor mit nyerünk az ügyleten? Mire jó a nagy felhasználóbázis, ha ingyenes a termék? És úgy eleve hogy lesz ebből pénz?

Ennek több módja is lehet. Az első, és egyben legrizikósabb megoldás a donation, azaz támogatás. Ilyen esetben a fejlesztő létrehozza a terméket, elérhetővé teszi azt, majd arra kéri a felhasználókat, hogy pénzzel támogassák a fejlesztést. Akár úgy is felfoghatjuk, hogy mindenki annyit fizet a termékért, amennyit az ér neki. Ilyen modellt követ például a Wikipedia, vagy a Mozilla alapítvány. A dolog elsőre jól hangzik, de az esetek nagy többségében nincs meg a felhasználókban az affinitás arra, hogy fizessenek. Miért fizetnének utólag, ha már övék a termék. Ez persze valójában nem racionális hozzáállás a felhasználók részéről, hiszen ha nem támogatják a fejlesztést, az akadályozza a termék továbbfejlődését. Mostanában ezt próbálják minél erősebben megértetni a fejlesztők a felhasználókkal, hogy a termék fejlődése szempontjából végső soron az ő érdekük, hogy néhány dollárral támogassák a fejlesztést. Ha elég nagy a felhasználóbázis, és a felhasználók egy kis része hajlandó támogatni egy kis összeggel a fejlesztést, akkor sok kicsi sokra megy alapon egész szép összegek gyűlhetnek össze. Persze az igazán szerencsés helyzet az, ha a termék használatához valamilyen cégnek fűződik érdeke. Ilyen esetben egy-egy cég nagyobb összegű támogatást is tud nyújtani. Ráadásul ez nekik is megéri, hiszen valamilyen áttételes módon ebből nekik bevételük származik, ellentétben egy átlagfelhasználóval, aki csak saját céljaira szeretné használni a szoftvert. Igazából ez az, ami életben tartja a Wikipediát, a Mozillát, vagy éppen a Linuxot. A Linux mögött cégek tömege sorakozott fel, akik folyamatosan tolják a pénzt a fejlesztésbe, a Wikipedia és a Mozilla legnagyobb adományozója pedig a Google. Nagy felhasználóbázis mellett tehát működhet a donation modell, de kis projekteknél kétséges a dolog sikere. Kezdő projektnél meg ugye rizikós, hogy tud-e majd a jövőben akkora felhasználóbázist szerezni, hogy működjön a modell. De milyen egyéb lehetőségek vannak?

A donation mellett a másik lehetséges jövedelemforrás a kapcsolt szolgáltatások. Jó példa erre a WordPress. A WordPress maga egy nyílt forráskódú, teljesen szabadon, és ingyenesen használható szoftver. Bárki installálhat magának egyet, és használhatja azt teljesen ingyen. Ennek ellenére a WordPress-t fejlesztő Automattic egy jól menő amerikai cég. Az Automattic WordPress hosztinggal, és supporttal foglalkozik, és ebből nagyon jól megélnek. Sok felhasználó nem akar azzal bíbelődni, hogy saját magának WordPress-t installáljon. Inkább létrehoz magának egy blog-ot a WordPress.com-on, ami egyébként ugyancsak ingyenes. Pénzt a prémium szolgáltatásokért, saját domainért, weblap sablonokért, stb. fizet. Ez is csak pár dollár, ami a felhasználónak meg sem kottyan, de a sokszor pár dollár elég egy ilyen jól menő cég fenntartásához. A WordPress hoszting rendszerén e mellett több nagy, főleg technológiai témájú újság is fut, akik ugyancsak prémium előfizetők.

Ugyancsak a kapcsolt szolgáltatásokra épít a Magento webshop rendszer, de hasonló modellje van szinte az összes nyílt forrású, alternatív webshop megoldásnak. Az alap rendszer ingyenes, de vannak pénzes modulok, illetve weboldal sablonok. A felhasználók általában vesznek pár ilyen modult, vagy sablont, ami bőven fedezi a nyílt forrású rendszer fejlesztését. De hasonlóan kapcsolt szolgáltatásokon alapul az összes kereskedelmi Linux disztribúció, akik fizetős komponenseket, és supportot adnak a rendszerez. Folytathatnánk még a felsorolást, de igazából a lényeg változatlan. A nyílt forrás rendkívül jó "mézesmadzag", amivel jelentős felhasználói bázist alakíthatunk ki, akik potenciális vevői a kapcsolt termékeinknek és szolgáltatásainknak, amik bőven fedezik a nyílt rendszer fejlesztésének költségeit. Ráadásul így sokkal nagyobb bevételt érhetünk el, mint ha zárt forráskódú, pénzes terméket készítenénk, és azt próbálnánk rásózni a vevőinkre.

A bejegyzés végén kicsit kitérnék a nyílt forrású rendszerek licencelésére. Hogy a fejlesztőknek ne kelljen a jogi blablával foglalkozni, van néhány általános, nyílt forrású termékekhez használható licenc. Ezek igazából két nagy csoportba oszthatóak. Vannak az erős, és a gyenge ("business friendly") licencek. Talán a legerősebb ilyen nyílt forrású kódokhoz adható licenc a GPL. A GPL lényege, hogy ha az ilyen licenc alatt futó kód forráskódját bárki megváltoztatja, akkor köteles elérhetővé tenni az így elkészült szoftver forráskódját is. Ez oly annyira igaz, hogy ha valaki ezt nem teszi meg, akkor akár bírósági úton kötelezhető erre. Volt már ilyenre példa. A lényeg, hogy ez biztosítja azt, hogy a szoftver forráskódja nyílt marad, és egy cég, vagy fejlesztő nem "ülhet rá" egy-egy hibajavításra, vagy új funkcióra. Ez egyfajta kikényszerített hozzájárulás. A GPL azt is kimondja, hogy ha a kódot valami más kód részeként használjuk fel, akkor az így keletkező kód licence is automatikusan GPL lesz. Ilyen licenc alatt fut a WordPress, vagy a Linux kernel. Tehát ha valaki talál valami hibát a Linux kernelben, kijavítja azt, és így elad valamilyen terméket az ügyfelének, akkor köteles a javítást visszaosztani a közösségnek. Ez persze így igazságos, de a GPL mindezt "kőbe vési".

A GPL egy megengedőbb változata az LGPL, ami abban különbözik a GPL-től, hogy a kód változtatását ugyan vissza kell osztani, de ha azt valami más kód részeként használjuk fel, akkor a keletkező kód nem kell, hogy GPL licenc alatt fusson. Az LGPL-t általában programkönyvtárakhoz használják, és ez a kis kitétel lehetővé teszi, hogy a programkönyvtárat felhasználjuk zárt forráskódú termékekben is. Az LGPL tehát egy "business friendly" licenc. Ezzel biztosíthatjuk a programkönyvtár fejlődését, de lehetővé tehetjük annak kereskedelmi használatát.

Vannak még további erős és megengedő licencek. Talán az Apache licenc még ami elterjedt, ami lehetővé teszi a zárt forrású termékben való felhasználást, és nem kötelez a kód visszaosztására. De ugyanilyen megengedő a BSD vagy a MIT licenc is. A szabad szoftver licencekről a Wikipedia-n lehet bővebben olvasni.

Körülbelül ennyit szerettem volna írni a témáról. Remélem sikerült rávilágítani arra, hogy a szabad szoftver nem "ördögtől való", és adott esetben akár komolyabb pénz lehet benne, mint a hagyományos, zárt forrású szoftverekben. A lényeg mindig csak az, hogy ésszel építsük fel a stratégiánkat, és ott használjuk a szabad szoftvert, ahol annak helye van ...

Ajánlott olvasni való:

A kérdést egy kicsit más oldalról feszegeti +Balazs Nadasdi cikke (OpenSource, De Miért?), ami a nyílt forrás munkavállalással kapcsolatos előnyeivel foglalkozik behatóbban.

Illetve íródott egy nagyon jó könyv Ingyen! címmel, mely az ingyenes szoftverek és szolgáltatások mögötti üzleti modelleket elemzi.