Trošku kontroverzný pohľad na používanie nie len programátorských frameworkov.
Používanie frameworkov sa v posledných dekádach stalo populárne. Niekedy priam nevyhnutné. Nebudem zachádzať do detailov, ale dlhodobým pozorovaním trendu a toho akým smerom sa IT a technologický svet uberá ma nenecháva chladným. Musím opätovne vyjadriť znepokojenie.
Zaiste, frameworky majú svoje opodstatnenie a uplatnenie. Dneska sa však skôr stretávam s lenivosťou či chorobným presvedčením o užitočnosti frameworkov, ktoré proces vývoja komplikujú. Je ťažké na túto loď naskočiť a ešte ťažšie z nej vyskočiť.
Fameworky si svoju cestu k vývojárom prebíjajú predovšetkým presadzovaním komplexných technológií, ktoré dávajú význam vo veľkých nadnárodných firmách. Tu pod taktovkou korporátov existujú objektívne dôvody na to aby aplikácie mali závislosti v objeme aj niekoľkých stoviek Megabytov. Ja však nevidím dôvod aby takýto istý osud stretol aplikácie bežných užívateľov a spotrebiteľov. Nechcem aby súčasný trend sa stal samozrejmosťou a budúcnosťou pre jednoduché nástroje a aplikácie.
Súčasná veľkosť aplikácií a následných závislostí je často enormná. Prehnane. Dobrým príkladom je framework Electron, ktorý sa na prvý pohľad javí ako dobrá cesta pre malý vývojársky tím. Problémov s používaním tejto technológie je hneď niekoľko.
Electron nie len, že spolieha na najhorší programovací jazyk – java script, ktorý som už viac krát kritizoval, ale naviac je celý postavený ako wrapper pre google chrome. Optimalizácia a ako aj celá architektúra google chrome je téma sama o sebe. Mne vadí hlavne optimalizácia a osobná bezpečnosť. Aplikácie v Electrone jednoducho žerú príliš veľa zdrojov a v pozadí robia veci, ktoré sú zbytočné.
A bohužiaľ väčšina moderných frameworkov trpí týmto neduhom.
Ďalším zásadným nedostatkom mnohých frameworkov je závislosť na korporátoch alebo inak spolitizovaných vývojárov, ktorí sa nám so svojim frameworkom snažia predať aj určitú myšlienku. Či už ide o spôsob akým distribuujeme svoju aplikáciu alebo podobu písania aplikácie. Vývojári sú nútení používať konkrétne nástroje, knižnice a postupy.
Na prvý pohľad nevinný ústupok, ktorý si nakoniec berie príliš veľkú daň.
Akákoľvek závislosť, ktorú tvorcovia programu nemajú pod kontrolou je zlá. Či je to závislosť na knižniciach operačného systému alebo frameworku. O to viac, ak framework je prehnane závislý na ďalších externých knižniciach uzavretých systémov.
Paradoxne práve vývojárske frameworky by mali užívateľa a a predovšetkým vývojárov odbremeniť od závislostí a umožniť distribúciu naprieč platformami bez dodatočnej práce. Existuje množstvo frameworkov, ktoré sa o to snažia. Napríklad cross-platformový Qt Framework.
Qt framework bol dlhé roky zastrešený spoločnosťou Nokia, kde nabral korporátneho ducha. A s tým prichádzajú aj určité výhody no aj nevýhody.
Dnes sa preto pravidelne stretávam s problémom, kde každá aplikácia postavená na Qt Frameworku mi po určitej aktualizácii prestane fungovať alebo sa odmietne nainštalovať. Najčastejšie na operačnom systéme OS X alebo aj Linuxe.
Dôvodom je závislosť frameworku na konkrétnej verzii operačného systému alebo určitej závislosti. Pritom keď sa pozrieme do samotného kódu aplikácie, tak k hrubým zmenám nedošlo. Zmenila sa len verzia frameworku, ktorý jednoducho nepodporuje staršie operačné systémy (niekedy iba 4 roky).
Obviniť z toho môžeme vývojárov, ktorí nás nútia k aktualizácii systému. Tu však narazíme na určitý problém. Samotní vývojári sú rovnako ako užívatelia nútení k aktualizácii vývojárskeho prostredia lebo staršie verzie na nových operačných systémoch nechcú bežať a nové nechcú bežať na starších. A tak sa framework z pomocníka stáva čosi iné…
Nemyslím si, že je toto správny prístup. Chápem dôvody a príčiny. Väčšmi ak ide o úzko zamerané vývojové prostredie obmedzené len na jednu platformu ako je WinAPI alebo Cocoa. Ale nerozumiem tomu pri vývojárskych nástrojoch snažiac sa o cross-platformový vývoj. A tiež nerozumiem tichému súhlasu programátorov a všetkých vývojárov. Prehnaná benevolentnosť ma vedie k špekuláciam.
Dnes sme svedkami ako Google Chrome využíva svoje majoritné postavenie na poli prehliadačov. Výsledkom je distopická podoba diktovania naprieč technológiami a tak aj následnej závislosti na korporátnych náladách. Všetci jasajú a zúčastňujú sa rôznych táborov, kde dochádza k indoktrinácii a propagácii nie len prospešných technológií, ale aj postupov, ktoré naivných ovplyvnia k nepoznaniu. A potom príde vytriezvenie. Lebo google zavelí. Manifest v3 prinesie „zmenu“. Tou bude zrušenie podpory množstva rozšírení. Prečo? Lebo google je korporátna firma, ktorej utekajú peniaze. Alebo si myslíte, že to robia pre pokrok?
Pre mňa pokrok znamená aj otvorenosť. A ak sa väčšina užívateľov zhoduje, že je reklamy na internete príliš veľa a používa preto rozšírenie na blokovanie reklamy, je zrejmé že prínosom pre užívateľov je obmedzenie reklamných zdelení. Google však profituje na reklame a zbieraní údajov o našom správaní na internete. Akékoľvek obmedzovanie tejto snahy je strata pre google. A ten si preto ako najväčší hráč v online svete diktuje podobu internetu. Či vedome alebo nie – správne to nie je!
A toto je úskalie akéhokoľvek frameworku alebo rozsiahlejšej vývojárskej knižnice. Podobnú brzdu pokroku sme zažili aj s DirectX od Microsfotu. Je pritom zvláštne, že mnoho vývojárov Vás bude aj naďalej priam fanaticky presviedčať ako užásné DirectX je a OpenGL je zaostalé. A pritom práve OpenGL je technológia, ktorá prekonala DirectX v mobiloch a na internete lebo nebola prikovaná len k jednej technológií. A pritom tento diktát začal nevinným marketingom, pokračoval majoritným postavením a nakoniec diktátom, ktorý trval desiatky rokov. Tak sa zbrzdil vývoj na iných platformách, ktoré dneska mnohí nespravodlivo označujú za zaostalé alebo nevhodné v určitej oblasti.
Podobný prípad by sa u spoločnosti Microsoft dal vidieť aj pri ďalších projektoch: Office, ActiveX, WinAPI, Internet Explorer… Produkty a technológie naviazané na jednu platformu a často krát aj na konkrétnu verziu operačného systému. Nemysliteľné. Jednoducho hlúposť!
Práve cross-platformové frameworky je možné považovať za vhodné riešenie. Ale ako som spomínal v prípade Qt frameworku narážame na zásadný problém na previazanosť s „aktuálnou“ verziou operačného systému aj v prípade, že staršia verzia systému má všetko potrebné k plnohodnému fungovaniu. Čo nemá je punc aktuálnosti a „modernosti“ odobrenej vývojárskou elitou.
Ďalším problémom závislosti na frameworku je dedičnosť licenčných ujednaní, ktoré sa môžu v tichosti od verzie k verzii meniť. A tak vaše aplikácie vo väčšom alebo menšom musia dodržiavať licenčné podmienky daného frameworku.
Naviac ak je framework v rukách koporácie, súkromnej firmy alebo aj neziskových združení, ich politické smerovanie ide mimo vás a musíte sa prispôsobovať názorom ľudí, skrytých pod pojmami ako konzorcium, združenie a pod. Často ide o kolektívy závislé na financovaní korporácií, aj preto sú takéto organizácie v područí technologických gigantov, ktorí si aj takýmto spôsobom udávajú smer technológií. Nechajte sa preto nachytať a stiahnuť pod zástavu neviditeľného impéria presadzujúc jednu pravdu.
Existujú aj frameworky pre vývoj webových stránok. A práve tu môžeme rýchlo pochopiť úskalia spojené s vývojom pomocou frameworku. Na jednu stranu webové frameworky uľahčujú písanie kódu či kompatibilitu naprieč zariadeniami. Na druhú mnohé diktujú a tak menia spôsob vášho uvažovania a celkový postoj k ďalšiemu vývoju. Malá vec, ale s veľkým dopadom. Aj preto množstvo webov stráca originalitu. Sú viacmenej zlepencom a odkazom trendov bez duše a nádychu jedinečnosti. Občas to dáva význam. Nie však ak sa takýto prístup stáva rigidnou povinnosťou.
Budovanie vlastnej aplikácie je náročné. Vyriešiť kompatibilitu naprieč viacerých platforiem nie je jednoduché. Ide o časovo náročný proces. Ale ak dokážete vyriešiť prvotné úskalia nie ste viazaný na nálady iných vývojárov. Sami sa stávate autorom frameworku. Podľa Vás a nie podľa diktátu iných.
Uznávam, je to ťažšia cesta. Ale slobodnejšia. Viac Vás naučí. A nie len o technológií, ale aj zdravej pokore a rešpekte ku každému, kto sa na túto cestu vydal.