Písal sa rok 1980. Počítače boli relatívne čerstvou akademickou novinkou, ubehlo len niekoľko rokov od vydania programovacieho jazyka C či štylistického nástroja TeX. Na poli operačných systémov sa rapídne šíril Unix, konzolový systém bez grafického rozhrania, ovládal sa textovými príkazmi a hoci v tej dobe už existovala počítačová myš, prakticky sa nepoužívala. Vývoj softvéru vznikajúcimi technickými korporátmi bol vzhľadom na rodiaci sa sektor do značnej miery vecou firemného know-how, ktoré si každá spoločnosť chránila a udržiavala pod zámkom, aby udržala náskok pred konkurenciou.
Bolo to v tejto dobe, keď spoločnosť Xerox darovala laboratóriu pre výskum umelej inteligencie MIT jednu z prvých laserových tlačiarní. Išlo o vysokorýchlostnú kancelársku kopírku upravenú na tlačiareň, čo však malo svoje nevýhody. Dochádzalo často k zasekávaniu papiera, ktoré si kvôli sieťovej práci nemal kto všimnúť a opraviť. Stroj tak síce bol schopný vytlačiť stranu behom pár sekúnd, programátori však hodinu potom ako zaradili svoje dokumenty do fronty na vytlačenie pri preberaní zistili, že kopírka bola celý čas zaseknutá a fronta sa nepohla, pretože si zápchu nikto nevšimol. Problém opravili, tlačenie zase chvíľu fungovalo a opäť sa zaseklo do doby, kým ho niekto znovu nespojazdnil.
Pre laboratórium pracoval v tej dobe aj Richard Matthew Stallman, známy tiež pod prezývkou RMS. So svojimi kolegami vymyslel riešenie, ktoré spočívalo v úprave firmwéru tlačiarne tak, aby sám nahlásil ak dôjde k zápche (tlačiareň ju detekovať vie), riadiaci počítač by následne zavolal niekoho, kto by zariadenie odblokoval.
Toto riešenie však nebolo možné aplikovať. Systém Xeroxu bol uzavretým súkromným vlastníctvom spoločnosti, ktorá k nemu nedávala nikomu prístup, dokonca ani MIT. Napriek tomu, že RMS a jeho tým boli expertní programátori a úprava by im zabrala nanajvýš pár minút, Xerox odmietal poskytnúť zdrojový kód svojho firmvéru, a tak malo laboratórium jednu z najmodernejších tlačiarní na svete, ktorá bola ale kvôli vlastníckym právam a stráženiu tajomstiev úplne nepoužiteľná.
Tento incident Stallmana rozčaroval natoľko, že ho podnietil položiť základné myšlienky otvoreného, slobodného softvéru a princípy komunitného, transparentného vývoja, ktoré neskôr prerástli do open-source hnutia a okrem revolúcie v myslení programátorov priamo vyprodukovali veľa projektov zvučných mien ako Linux, Libre Office, VLC, Signal, či nám dobre známe NVDA, eSpeak, RHVoice alebo Piper.
Čo s týmto príbehom majú používatelia čítačov obrazoviek a ako sa ich týka? Veľmi veľa. Pretože my sme častokrát v presne rovnakej situácii, ako Stallman s jeho tlačiarňou. Máme softvér, ktorý je skvelý a preukázateľne robí dobre svoju prácu, možno priam excelentne, ibaže má prístupnostné vady, ktoré znamenajú, že je pre nás nepohodlný na používanie, alebo úplne nepoužiteľný. Ako sa s problémom popasoval Stallman, a čo si z neho môžeme zobrať my?
Zdrojový kód a reproducibilita
Držať v ruke smartfón a vedieť, ako taký smartfón od základu vyrobiť sú dve rozdielne veci. Veľmi podobne je na tom softvér. K používateľom sa zvyčajne dostávajú programy v podobe .exe súboru obsahujúceho inštrukcie a príkazy pre počítač, ktoré ale programátori nepíšu ručne (je ich veľmi veľa a okrem samotnej podstaty aplikácie musia riešiť aj množstvo detailov, ktoré s ňou na prvý pohľad priamo nesúvisia, ako vyžiadanie operačnej pamäte od systému, komunikácia so systémom ohľadom prístupu na disk, internet a iné zdroje). Namiesto toho sa pri programovaní v jazykoch podobným tým ľudským konceptuálne opisuje čo by mal daný program robiť a ako, pričom až špecializované programy tieto opisy podľa ďalších súborov inštrukcií skompilujú do vysoko optimalizovaného strojového kódu, ktorý už nebudú čítať ľudia ale procesor počítača, a ktorý obsahuje všetko podstatné, aby mohla aplikácia bez problémov bežať. Tento konceptuálny opis sa nazýva zdrojový kód, a je pôvodom každého programu, s ktorým používatelia pracujú. Podobne ako každý smartfón či iný prístroj začína ako technický nákres.
Zo zdrojového kódu sa dá vytvoriť finálny program, ale naopak je to už komplikovanejšie. Rovnako je zdrojový kód potrebný ak chceme robiť v programe akékoľvek zmysluplné úpravy. Podobne ako s jedlami a receptami je možné podľa receptu reprodukovať jedlo, ale môžeme iba aproximovať recept na základe hotového jedla, čo v praxi znamená skôr vytvorenie úplne nového pokrmu, ktorý originál viac pripomína než reprodukuje.
Otvorený zdrojový kód: Spoločne sme silnejší
Stallman v dobe „závodov v zbrojení“ prišiel s myšlienkou, že softvérový vývoj, podobne ako vedecký pokrok, by mal byť otvorený a slobodný. Programátori by mali zdieľať zdrojové kódy svojich programov a dávať ich používateľom práva na voľné upravovanie, kopírovanie a redistribuovanie tohto kódu. Dokonca prišiel s princípom tzv. copyleftu, ktorý v licenčných podmienkach garantuje všetky tieto slobody pod jedinou podmienkou, že používatelia budú aj výsledok takýchto akcií distribuovať s rovnakými slobodami (preto copyleft, ide o filozofickú a slovnú hračku termínu copyright).
Účelom je jednak zabezpečiť práva používateľom softvéru, aby nedochádzalo k situáciám akou bola slávna Stallmanova tlačiareň. Ide tu však zároveň aj o ďalších vývojárov a spoluprácu medzi nimi. Nie je totiž programátor ako programátor. Každý jeden program sa skladá z mnohých komponentov – grafické rozhranie, sieťová komunikácia, serveri infraštruktúry, samotná funkcionalita programu, to sú všetko oblasti, ktorých štúdiom sa dá stráviť život a máloktorá firma si pri vývoji môže dovoliť zaplatiť experta na každú jednu z nich. A keby si aj mohla, ak by každý pracoval skryte na tých istých problémoch, dokola by sa znovu vynaliezalo koleso a nikam by sme sa neposúvali. Otvorený vývoj v tomto priniesol revolúciu. Namiesto toho, aby vývojári navzájom súperili, začali spolupracovať. Experti na sieť vytvárali a kodifikovali sieťové protokoly a softvér, výsledky dávali voľne k dispozícii. Experti na grafické rozhrania trávili dni a noci tvorbou počítačovej grafiky, ktorá by rozumne fungovala, a opäť svoju prácu dávali k dispozícii. Kryptológovia do úmoru skúmali matematické vlastnosti šifrovacích algoritmov a vytvárali ich čo najlepšie implementácie, a výsledok zase zverejňovali na používanie. Výsledkom bolo, že expert na ktorúkoľvek oblasť mohol zrazu vytvoriť program, ktorý nebol dobrý len v tom, na čo sa on sám, alebo jeho tým špecializoval, ale vďaka slobodnej práci mnohých iných expertov mal dobré rozhranie, bol bezpečný na používanie, či vedel spoľahlivo sieťovo komunikovať. Nešlo tak v žiadnom prípade len o zdieľanie pre „dobrý pocit“. Zrejmým dôsledkom a benefitom bolo: „Dnes ja tebe, zajtra ty mne.“
Toto sa veľmi úzko týka aj čítačov obrazoviek a prístupnosti. Spraviť knižnicu pre tvorbu grafických rozhraní bez prístupnosti je jedna vec, s prístupnosťou druhá vec a s kvalitnou prístupnosťou niečo úplne iné. Najmä tretia spomínaná fáza si vyžaduje intenzívnu prácu expertov na túto oblasť, ktorých však nie je veľa a mnohé firmy majú slabú motiváciu ich platiť.
Ďalšou silnou stránkou open-source vývoja je, čo sa so softvérom deje po jeho oficiálnom vydaní. Pokiaľ za uzavretou aplikáciou či programom stojí firma, jej hlavnou starosťou je potreba platiť programátorov, preto nie je vôbec zriedkavé, že ak konkrétny program nie je práve bestseller, jeho vydaním sa vývoj viac menej končí, či v tom lepšom prípade prechádza do údržbového módu. Otvorený softvér, naopak, je aj po vydaní (neraz práveže po vydaní) hnaný vpred komunitou svojich používateľov. Jeho autori nedokážu pri najlepšej vôli predvídať všetky možné použitia a využitia ich práce, a už vôbec nemávajú prostriedky na to aby ich všetky svojim úsilím pokryli. Ľudia, ktorí tieto potreby majú sú však neraz ochotní ich pre svoje použitie poskytnúť, keďže im samým sa viac oplatí mierne upraviť existujúci projekt než vytvárať nový úplne od základov. Ak svoje úpravy spravia verejne a ponúknu ich späť autorom ako doplnenie ich projektu (čo je bežná prax), softvér sa takto prirodzene rozrastá a stáva silnejším. Rovnaký princíp sa týka opravovania chýb či nedokonalostí, ktoré môžu postihovať hoc len malú skupinu používateľov, no pokiaľ sa v nej nájde niekto ochotný problém vyriešiť, opraví ho zároveň pre všetkých postihnutých.
Identický princíp spolu s transparentnosťou stojí za vysokou úrovňou bezpečnosti a dôveryhodnosti otvoreného softvéru. Je stále veľmi čerstvý incident, v rámci ktorého náhodný programátor zastavil vysoko sofistikovaný a masívny pokus o infikovanie významnej softvérovej knižnice, pretože mu bolo podozrivé, že prihlasovanie sa na server trvá o pár sekúnd dlhšie než by malo.
Komunita nie sú len dobrovoľníci
Potom čo Stallman sformuloval základy open-source filozofie, začal spolu so svojim tímom pracovať na masívnej úlohe – vytvoriť slobodnú alternatívu Unixu, významného operačného systému tej doby. Práca trvala 10 rokov, počas ktorých vývojári vytvárali program za programom, knižnicu za knižnicou aby reprodukovali vtedajší unixovský štandard. Toto úsilie zakončil čerešničkou na torte v roku 1991 viac-menej úplnou náhodou vtedy fínsky študent Helsinskej univerzity Linus Torvalds, ktorý svojou voľnočasovou prácou doplnil posledný chýbajúci dielik do skladačky a vznikol Linux, prvý kompletne otvorený operačný systém, ktorý je dodnes jedným z najväčších open-source projektov, na ktorom sa podieľali už mnohé tisíce programátorov. To je však iný príbeh, o ktorom možno niekedy inokedy.
Pre konštruktívny prístup k veci je ale dobré si uvedomiť, kto je vlastne komunita. V úplných začiatkoch išlo v prvom rade o nadšencov a dobrovoľníkov, ktorých nadchíňala výzia vzájomnej spolupráce a možností, ktoré z nej plynuli. Neskôr sa začali formovať prvé neziskovky, ktoré tieto aktivity zastrešovali, za všetky možno spomenúť Stallmanovu FSF (Free Software Foundation). Silnou stránkou neziskoviek je, že vedia svojich pracovníkov plnohodnotne platiť a koncentrovať tak úsilie na danú úlohu, zvyčajne z rôznych zdrojov akými môžu byť granty, príspevky od podporovateľov, investorov a iných entít.
Svojskou kategóriou sú ale technické korporáty. Firmy ako Microsoft boli spočiatku veľmi znepokojené open-source hnutím, špecificky Linuxom, ktorý vnímali ako hrozbu pre svoje systémy. A to do takej miery, že sa uchyľovali k vysoko kontroverzným kampaniam aby ho zastavili. No ako Microsoft, tak aj ďalšie spoločnosti si neskôr uvedomili, že skôr ako bojovať proti otvorenému softvéru sa aj im viac oplatí spolupracovať. Dôvod je jednoduchý, ak budú využívať otvorené komponenty, ušetria náklady na vývoj od základov, vyhnú sa zbytočným chybám, čím porastie kvalita ich produktov a ešte budú aj môcť čerpať od dobrovoľníkov. Zatiaľ čo na opačnej strane budú otvorené projekty benefitovať z finančnej a vývojárskej sily veľkých firiem, zvyšujúc stabilitu a konzistentnosť. To je win-win situácia pre všetkých.
Dnes má Microsoft na populárnej vývojárskej platforme GitHub (ktorú zároveň vlastní) vyše 6000 repozitárov, Google niečo cez 2 a pol tisíc, Meta (stojaca za Facebookom) vyše stovku (ide o menšie číslo ako v prípade predchádzajúcich dvoch, no patria k nim programátorské frameworky ako React, ktoré patria k najvyužívanejším webovým technológiám).
Otvorený softvér tak dnes už tvoria všetky 3 zložky – dobrovoľníci a individuálni vývojári, neziskové organizácie, veľké technologické firmy, ktoré vzájomnou spoluprácou tvoria masívnu vývojovú silu, ktorá posúva technológie vpred.
Komunita, to sme aj my
To všetko je veľmi pútavý príbeh, o ktorom, mimochodom, vznikol aj film. Čo ale robí na portáli zaoberajúcom sa asistenčnými technológiami?
Aj my, nevidiaci či slabozrakí, sme súčasťou komunity. A vôbec nezáleží na tom, či sme programátori alebo nie. Pokiaľ vyjde uzavretý program, ktorý nie je prístupný pre čítače obrazoviek, veľa s tým robiť nemôžeme. Vieme sa ozvať autorom a prístupnosť pripomienkovať, či sa ich ale vôbec dopátrame a či vyhovejú našim potrebám, to je vo hviezdach. Najsilnejšie čo vieme urobiť je reťazová reakcia, v rámci ktorej pripomienkujú viacerí postihnutí, no pokiaľ program nie je aktívne vyvíjaný, čo je celkom reálny scenár, ani takýmto počinom si príliš nepomôžeme. Otvorený softvér nám však dáva úplne iné možnosti.
V prvom rade je to transparentná komunikácia. Otvorené programy mávajú takmer vždy repozitár, v ktorom ukladajú a verziujú svoj zdrojový kód spolu so všetkými zmenami, ktoré sa v ňom robia a dokumentáciou, najčastejšie na už spomínanej platforme GitHub. Tieto platformy zvyčajne priamo poskytujú možnosť otvoriť pripomienku tzv. Issue, ktorú následne vidí nie len autor repozitára, ale každý, kto si ho otvorí, s našou pripomienkou tak môžu interagovať existujúci prispievatelia, budúci prispievatelia, iný nevidiaci či slabozraký (môžeme si na každom repozitári vyhľadať kľúčové slovo accessibility príp. screenreader a pozrieť sa, či prístupnosť neriešil už niekto pred nami a aký bol výsledok). Pokiaľ sa problémy prezentujú jasne, konštruktívne a zdvorilo, dá sa dosiahnuť veľmi veľa.
V niektorých prípadoch vývojári nemusia mať celkom prostriedky vyriešiť hlásené problémy, pretože by síce možno ani nešlo priamo o náročnú vec, ale je vyžadovaných množstvo menších úprav, ktorých korektné zvládnutie si vyžaduje vedieť ovládať čítač obrazovky a venovať pomerne veľa času skúšaniu a debugovaniu. Zrakovo postihnutí programátori môžu v takýchto prípadoch veľmi účinne zasiahnuť a prostredie problémovej aplikácie vyladiť sami, majú na to koniec koncov najlepšiu kompetenciu. Aj v tomto prípade funguje spolupráca, tému prístupnosti danej aplikácie môže otvoriť ktokoľvek schopný napísať technický report, o implementáciu sa môže postarať niekto úplne iný.
Je mýtus, že softvérovú komunitu tvoria len programátori. A to aj odhliadnuc od toho, že pri vývoji sú nemenej dôležití grafici, prekladatelia, zvukári, výtvarníci, umelci, hudobníci, psychológovia, dizajnéri, spisovatelia, slovom každý, kto vie nejakým spôsobom priamo prispieť a vylepšiť projekt. Komunitu však rovnako tvoria jej používatelia. Jednak tým, že vyjadrujú svoje potreby a názory, ktoré majú pre autorov význam aj keď možno vyvíjajú projekt hlavne pre vlastnú potrebu (čím viac potrebám vyhovejú, tým porastie používateľská základňa a viac používateľov znamená potenciálne viac prispievateľov). Používatelia môžu však zároveň financovať nové funkcie, prípadne môžu do projektu pritiahnuť úplne nových ľudí (napríklad z neziskových organizácií alebo záujmových združení) a nemusí ich to stáť v niektorých prípadoch nič okrem trochy iniciatívy a energie.
Možností je naozaj veľa. Základom všetkého je, že kde funguje otvorený a komunitný vývoj ako bežný používatelia už nie sme len bezmocnými spotrebiteľmi, ale môžeme sa sami aktívne angažovať a zapájať, čím pomôžeme nielen sebe, ale aj veci ako takej.
Iste, nie všetky aplikácie možno jednoducho sprístupniť. Veľa závisí od toho, ako je program štrukturálne postavený a z akých komponentov. Niekedy je prístupnosť len vecou kozmetických zmien, občas treba hlbšie prekopať niektoré dizajnové rozhodnutia. A sú taktiež prípady, kedy je vzhľadom na architektúru, pokúšať sa urobiť aplikáciu prístupnou podobná úloha ako mať pyramídu z bielych kariet a chcieť vymeniť tieto karty za zelené. Teoreticky to ide, ale vyžadovalo by si to toľko úsilia a prostriedkov, že je jednoduchšie postaviť novú pyramídu.
V každom prípade ale máme k dispozícii slobodu. A v tom je veľká sila.
Okomentujte ako prví