
Strávte dosť času na Hacker News alebo Reddite a skôr či neskôr narazíte na tú istú kritiku: Electron je prebujnený, spotrebúva priveľa pamäte a seriózne desktopové aplikácie by mali byť natívne.
Na tejto kritike je niečo pravdy. Aplikácie postavené na Electrone majú spravidla vyššie základné nároky na zdroje, pretože sa dodávajú spolu s Chromiom a Node.js. Starostlivo navrhnutá natívna aplikácia môže spotrebúvať menej pamäte, spúšťať sa rýchlejšie a hlbšie sa integrovať s operačným systémom.
Táto debata sa však príliš sústreďuje na počítač a príliš málo na firmu, ktorá softvér vytvára.
Pre väčšinu používateľov je technológia stojaca za aplikáciou takmer nepodstatná. Zaujíma ich, či funguje, či reaguje svižne, či sa opravujú chyby a či neustále pribúdajú užitočné funkcie. Pre softvérovú firmu je preto jednou z najdôležitejších vlastností technologického stacku niečo, čo sa v tabuľkách benchmarkov objavuje len zriedka: ako rýchlo dokáže tím produkt vytvárať, vydávať, získavať poznatky a zlepšovať ho?
Pri mnohých moderných desktopových aplikáciách je v tomto Electron mimoriadne dobrý.
Vzácnym zdrojom je čas vývojárov
Idealizovaná firma vyvíjajúca natívny desktopový softvér má vynikajúci tím pre macOS, ďalší tím vytvárajúci aplikáciu pre Windows a možno aj ďalší tím zabezpečujúci podporu Linuxu. Každá aplikácia je starostlivo optimalizovaná pre svoju platformu a každý vývojár do hĺbky rozumie operačnému systému, pre ktorý pracuje.
Väčšina firiem si takýto luxus nemôže dovoliť.
Na desktopovom produkte môže pracovať päť vývojárov. Alebo dvaja. Tí istí vývojári musia vytvárať funkcie, opravovať chyby, zlepšovať výkon, reagovať na zákazníkov, udržiavať infraštruktúru, vyrovnávať sa so zmenami operačných systémov a posúvať produkt vpred.
Natívny vývoj to sťažuje, pretože macOS, Windows a Linux sú skutočne odlišné platformy. Majú rôzne frameworky používateľského rozhrania, API, systémy oprávnení, správanie počas životného cyklu aplikácie, inštalátory, mechanizmy aktualizácií, systémy oznámení, správu okien, API pre prístupnosť a roky nahromadených osobitostí špecifických pre jednotlivé platformy.
Electron tento pomer mení. Spája Chromium, Node.js a desktopové API do spoločného aplikačného modelu pre macOS, Windows a Linux. Ten istý vývojár pracujúci v TypeScripte často dokáže vytvoriť funkciu od rozhrania až po aplikačnú logiku a vydať ju na každej desktopovej platforme. Natívny kód je naďalej k dispozícii, keď je naozaj potrebný, ale stáva sa výnimkou namiesto základu produktu. Samotný Electron to opisuje ako jednu zo svojich hlavných výhod: jednu kódovú základňu v JavaScripte pre všetky tri hlavné desktopové platformy.
Tento rozdiel sa v priebehu rokov násobí. Ak každá významná funkcia vyžaduje samostatnú implementáciu pre Mac a Windows, firma túto daň za platformy platí opakovane: pri každej funkcii, zmene dizajnu, experimente, oprave chyby, zlepšení prístupnosti a optimalizácii výkonu.
S Electronom sa veľká časť tejto práce urobí iba raz.
Electron uprednostňuje rýchlosť iterácií
Produkty sa málokedy stanú skvelými preto, že ich prvá implementácia bola dokonalá. Skvelými sa stávajú vďaka iteráciám.
Tím niečo vydá. Zákazníci to používajú. Tím získava poznatky. Funkciu upraví. Používa ju viac ľudí. Objaví sa ďalší problém. Tím ju opäť zlepší.
Čím kratší je cyklus medzi nápadom, implementáciou, spätnou väzbou a zlepšením, tým rýchlejšie sa produkt zdokonaľuje.
Electron je mimoriadne dobrý v skracovaní tohto cyklu, pretože je postavený na technológiách, ktoré softvérové firmy už používajú všade: JavaScript, TypeScript, HTML, CSS, React, Chromium, Node.js a npm.
To znamená, že firmy môžu zdieľať oveľa viac než len zdrojový kód. Medzi webovými a desktopovými produktmi môžu zdieľať vývojárov, komponenty používateľského rozhrania, nástroje, knižnice, infraštruktúru, prístupy k testovaniu a znalosti nahromadené v organizácii.
Frontendový vývojár sa zrazu nestáva nepotrebným len preto, že firma potrebuje pomoc s klientom pre Windows. Desktopový vývojár môže prispievať do webovej aplikácie. Full-stack vývojár pracujúci v TypeScripte sa môže presúvať medzi produktmi podľa toho, ako sa menia priority.
Pre malú alebo stredne veľkú firmu môže mať táto flexibilita oveľa väčšiu hodnotu než úspora 100 MB RAM.
Pozrite sa, kto Electron skutočne používa
Electron sa niekedy opisuje ako skratka pre firmy, ktoré nie sú ochotné investovať do „poriadnej“ desktopovej aplikácie. Pri pohľade na produkty, ktoré sú na ňom postavené, je však čoraz ťažšie tento argument obhájiť.
Samotný projekt Electron vyzdvihuje produkty ako Slack, Discord, Signal, ChatGPT, Claude, Visual Studio Code, Notion, Docker, Loom a Canva. Nie sú to jednoduché pomocné programy. Mnohé patria medzi najsofistikovanejšie a najpoužívanejšie aplikácie na zvyšovanie produktivity na svete.
Visual Studio Code je obzvlášť užitočný príklad. Microsoft by mohol svoj vlajkový editor kódu vytvoriť pomocou prakticky akejkoľvek technológie pre Windows, akú by si vybral, a napriek tomu VS Code používa Electron na Windowse, macOS aj Linuxe. Zahŕňa terminály, ladenie, jazykové servery, integráciu Gitu, vzdialený vývoj, notebooky, rozšírenia a výrazne prispôsobené editory.
Zaujímavou otázkou nie je, či by Microsoft mohol ušetriť pamäť vytvorením troch samostatných natívnych verzií. Samozrejme, že mohol.
Lepšou otázkou je, či by sa VS Code vyvíjal rovnako rýchlo, zostal rovnako konzistentný naprieč platformami a vybudoval si taký rozsiahly ekosystém, keby každá zásadná schopnosť vyžadovala viacero samostatných implementácií.
ChatGPT a Claude ukazujú rozdiel v prístupe
Poučný je aj kontrast medzi ChatGPT a Claude.
OpenAI pôvodne vytvorilo pre ChatGPT samostatnú natívnu aplikáciu pre macOS. Anthropic naopak postavilo Claude Desktop na Electrone a od začiatku malo spoločný desktopový základ naprieč platformami.
Tento rozdiel naberal na dôležitosti s tým, ako sa produkty rozrastali. Claude Desktop mohol do tej istej multiplatformovej aplikácie priebežne pridávať schopnosti, ako sú integrácie MCP, rozšírenia a Claude Code. Anthropic dnes podporuje Claude Code priamo v desktopovej aplikácii vrátane viacerých lokálnych a vzdialených relácií.
OpenAI neskôr tiež nasmerovalo svoj novší multiplatformový desktopový vývoj k Electronu a Electron dnes uvádza ChatGPT aj Claude medzi významnými aplikáciami, ktoré ho používajú.
Bolo by prehnané tvrdiť, že rozdiel v tempe vývoja produktov vysvetľuje iba Electron. Záleží aj na veľkosti tímu, prioritách, produktovej stratégii a vnútornej organizácii. Architektonická výhoda je však priamočiara: spoločný multiplatformový základ uľahčuje vydávanie funkcií pre rôzne operačné systémy bez udržiavania samostatných implementácií.
To je presne ten typ výhody, ktorého hodnota rastie spolu s desktopovým produktom.
Evernote spoznalo náklady na udržiavanie samostatných klientov
Evernote je jedným z najjasnejších historických príkladov tohto problému.
Evernote roky udržiavalo rôzne aplikácie pre Mac, Windows, mobilné zariadenia a web. Postupom času sa v týchto produktoch nahromadili rozdiely v správaní a vykresľovaní, predpoklady zdedené zo starších riešení a problémy so synchronizáciou.
V roku 2020 Evernote prestavalo svoje aplikácie pre Windows a Mac na spoločnej kódovej základni. Firma uviedla, že nový základ zvýši stabilitu aplikácií, umožní rýchlejšie opravovať chyby, častejšie vydávať funkcie a zlepší synchronizáciu medzi platformami.
Tento prechod nebol bezbolestný a niektorým dlhoročným používateľom sa nepáčila počiatočná strata funkcií špecifických pre jednotlivé platformy. Dôvod, pre ktorý sa Evernote pustilo do takého nákladného prepísania, je však zaujímavejší než samotné problémy pri prechode.
Keď má produkt pokročilý editor, offline úložisko, vyhľadávanie, prílohy, spoluprácu, úlohy, kalendáre a zložitú synchronizáciu, udržiavanie viacerých nezávislých implementácií sa stáva čoraz drahším. Chyby sa prejavujú odlišne. Vykresľovanie sa líši. Synchronizačná logika spolupracuje s rôznymi lokálnymi architektúrami. Každá významná zmena produktu sa musí premietnuť do viacerých klientov.
Spoločná architektúra nespôsobí, že náročné problémy zmiznú. Umožňuje firme vyriešiť viac z nich iba raz.
Linux môže byť najviac podceňovanou výhodou Electronu
Linux argumenty v prospech Electronu ešte posilňuje.
Poriadne podporovať Linux je náročné. Na rozdiel od macOS alebo Windows nie je „linuxový desktop“ jednou prísne kontrolovanou platformou. Vývojári musia riešiť rôzne distribúcie, formáty balíkov, desktopové prostredia, grafické stacky, systémové knižnice a zobrazovacie protokoly.
Pre mnohé softvérové firmy by bolo racionálnym obchodným rozhodnutím jednoducho Linux nepodporovať.
Electron mení ekonomiku tohto rozhodnutia.
Keďže Electron poskytuje spoločné behové prostredie pre macOS, Windows a Linux, pridanie podpory Linuxu môže byť výrazne jednoduchšie než udržiavanie samostatnej natívnej implementácie pre Linux. Aj preto majú dnes používatelia Linuxu prístup k mnohým významným desktopovým aplikáciám, ktoré by v minulosti možno nikdy nedostali oficiálneho linuxového klienta.
Visual Studio Code, Slack, Discord, Signal, 1Password, Postman, Obsidian a mnohé ďalšie nástroje môžu podporovať Linux bez toho, aby udržiavali úplne samostatnú aplikáciu v GTK alebo Qt.
Electron tiež za vývojárov aplikácií rieši množstvo zložitostí špecifických pre Linux. Dobrým príkladom je prechod z X11 na Wayland. Správcovia Electronu opísali, ako prechod Chromia na Wayland v podstate vzal so sebou aj aplikácie postavené na Electrone, čím sa znížilo množstvo práce na zobrazovacom stacku, ktorú musel každý aplikačný tím robiť samostatne.
Bez frameworkov, ako je Electron, by mnohé firmy nevytvárali natívnych klientov pre Linux. Jednoducho by podporovali macOS a Windows a používateľom Linuxu by zostala iba karta v prehliadači.
Electron pravdepodobne urobil pre komerčný desktopový softvér na Linuxe viac, než sa mu pripisuje.
Aj Microsoft si čoraz častejšie vyberá webové technológie
Microsoft je azda najsilnejším protipríkladom k predstave, že seriózny softvér pre Windows by mal vždy používať natívne frameworky používateľského rozhrania pre Windows.
Microsoft má pod kontrolou Windows. Má pod kontrolou Win32, .NET, WinUI, WebView2 a veľkú časť platformy, na ktorej vývojári stavajú. Ak by bol plne natívny vývoj pre Windows vždy samozrejmou odpoveďou, Microsoft by mal najlepšie možné predpoklady používať ho všade.
Nerobí to.
Visual Studio Code používa Electron. Teams je naďalej postavený na Reacte, TypeScripte a Chromiu aj po tom, čo Microsoft nahradil Electron optimalizovanejším hostiteľským prostredím WebView2. Nový Outlook pre Windows sa tiež vo veľkej miere opiera o webové technológie a Microsoft túto architektúru výslovne opisuje ako spôsob, ako zvýšiť agilitu, umožniť rýchlejšie dodávanie funkcií a vytvoriť konzistentnejší používateľský zážitok.
Teams je obzvlášť poučný. Microsoft chcel zlepšiť výkon a znížiť spotrebu zdrojov, preto zmenil architektúru. Používateľské rozhranie však neprepísal na tradičnú natívnu aplikáciu pre Windows.
Ponechal webový stack a optimalizoval riešenie okolo neho.
Na tomto rozdiele záleží. Microsoft sa rozhodol, že organizačné výhody Reactu, TypeScriptu a Chromia stoja za zachovanie aj pri intenzívnom zlepšovaní výkonu.
Je tu aj ďalšie ponaučenie. Samotný Microsoft v priebehu rokov predstavil mnoho generácií technológií na tvorbu aplikácií pre Windows: Win32, WPF, UWP, WinUI a ďalšie. Firma, ktorá si vyberie „natívny Windows“, si nemusí nevyhnutne vyberať nadčasovú platformu. Často vsádza na jednu generáciu frameworku, ktorý Microsoft práve uprednostňuje.
Webová platforma sa tak trochu ironicky stala jedným zo stabilnejších dostupných cieľových prostredí pre aplikácie.
Nábor je súčasťou architektúry
Výber frameworku určuje aj to, koho môžete zamestnať.
Vývojári JavaScriptu a TypeScriptu predstavujú jednu z najväčších skupín technických talentov v odvetví. Firma, ktorá stavia na Electrone, môže vyberať z tejto skupiny namiesto toho, aby potrebovala samostatné tímy skúsených špecialistov na macOS, Windows a Linux.
Špecialisti na natívny vývoj zostávajú cenní. Seriózne desktopové produkty stále potrebujú vývojárov, ktorí do hĺbky rozumejú operačným systémom. Electron však mení počet špecialistov, ktorých potrebujete.
Namiesto toho, aby väčšinu aplikácie museli vytvárať experti na jednotlivé platformy, môžete udržiavať relatívne malé množstvo natívneho integračného kódu a nechať väčšinu tímu pracovať na spoločnom produkte.
To je ešte dôležitejšie, keď firma už má webovú aplikáciu. Komponenty Reactu sa niekedy dajú zdieľať. Knižnice TypeScriptu sa dajú opätovne použiť. Produktová logika môže prechádzať medzi webom a desktopom. Vývojári môžu meniť tímy bez toho, aby sa museli naučiť úplne iný ekosystém.
Aj nábor sa stáva menej zraniteľným. Ak odíde jediný vývojár, ktorý do hĺbky rozumie vášmu natívnemu klientovi pre Windows, nahradiť jeho odborné znalosti môže byť náročné. Pri Electrone oveľa väčšia časť kódovej základne používa technológie, ktoré pozná aj zvyšok organizácie.
Framework preto neurčuje iba to, ako sa vykresľuje rozhranie. Ovplyvňuje aj to, ako môže byť usporiadaná samotná vývojová organizácia.
Natívne automaticky neznamená lepší softvér
Vývojári často používajú slovo „natívny“ takmer ako synonymum slova „rýchly“.
Nie je ním.
Natívne API dávajú vývojárom možnosť vytvoriť veľmi efektívnu aplikáciu. To, či ju výsledný produkt skutočne využije, závisí od architektúry, tímu, rozpočtu a množstva optimalizačnej práce, ktorú si firma môže dovoliť.
Aj natívna aplikácia môže byť pomalá, plná chýb, náročná na pamäť, nekonzistentná alebo zle udržiavaná.
Ešte dôležitejšie je, že rozdelenie obmedzeného tímu medzi viacero natívnych implementácií znamená, že každá implementácia dostane menej hodín vývojárskej práce.
Predstavte si, že firma má na svoj desktopový produkt k dispozícii šesť vývojárov. Jednou možnosťou je rozdeliť ich medzi Mac a Windows a Linux možno nechať bez podpory. Druhou je nasadiť takmer všetkých šiestich na jednu spoločnú aplikáciu v Electrone, ktorá slúži všetkým trom platformám.
Ktorý prístup poskytne firme väčšiu vývojársku kapacitu na zrýchlenie spúšťania, opravu únikov pamäte, doladenie interakcií, zlepšenie prístupnosti, zníženie počtu pádov a reagovanie na používateľov?
Nie je vôbec samozrejmé, že natívne aplikácie povedú k lepšiemu produktu.
Vzniká tak zaujímavý paradox: framework, ktorý spotrebúva o niečo viac počítačových zdrojov, môže firme umožniť vytvoriť lepšie optimalizovaný produkt, pretože spotrebúva oveľa menej vývojárskych zdrojov.
Electron vám dáva platformu pod kontrolou
Electron má aj ďalšiu výhodu, ktorú je ľahké prehliadnuť: dodáva sa s tým behovým prostredím Chromium, pre ktoré bola aplikácia vytvorená a na ktorom bola testovaná.
Tým sa z multiplatformového vývoja odstráni jedna významná premenná.
Frameworky založené na webových zobrazeniach operačného systému môžu vytvárať menšie aplikácie, no kompromis spočíva v tom, že ten istý frontend môže bežať na WebView2 vo Windowse, WKWebView v macOS a WebKitGTK v Linuxe. Tieto jadrá majú rôzne možnosti, chyby, harmonogramy vydávania a správanie pri vykresľovaní.
Electron volí iný kompromis: pribaliť behové prostredie a urobiť z neho súčasť aplikácie.
Áno, zaberá to miesto na disku.
Vývojárom to však poskytuje oveľa konzistentnejšie cieľové prostredie naprieč tromi veľmi odlišnými operačnými systémami.
Konzistentnosť má pre vývoj obrovskú hodnotu.
Keď Electron nestačí, stále môžete použiť natívny kód
Výber Electronu neznamená vzdať sa prístupu k natívnym možnostiam.
Aplikácie postavené na Electrone môžu podľa potreby používať natívne moduly a kód špecifický pre jednotlivé platformy. To znamená, že architektonická voľba v skutočnosti nie je:
100 % natívneho kódu alebo 100 % JavaScriptu.
Pre mnohé produkty je lepším modelom:
väčšina aplikácie spoločná, s malým množstvom natívneho kódu tam, kde ho operačný systém skutočne vyžaduje.
Natívny kód sa tak stáva záchranným riešením namiesto základu celého produktu.
Pre mnohé firmy je to oveľa lepšie rozdelenie vývojárskeho úsilia.
Používateľov zaujímajú produkty, nie frameworky
Existuje malá skupina technicky zdatných používateľov, ktorí otvoria Monitor aktivity, všimnú si niekoľko procesov Chromia a okamžite sa sťažujú, že aplikácia používa Electron.
Väčšina používateľov to nerobí.
Nezaujíma ich, že Slack používa Electron. Nezaujíma ich, že VS Code je postavený na webových technológiách. Nevedia, aký framework používa Claude. Zaujíma ich, či im softvér pomáha vykonať ich prácu.
Ak sa aplikácia spúšťa dostatočne rýchlo, reaguje svižne, zriedka padá a rieši používateľov problém, technológia použitá na jej implementáciu je do veľkej miery neviditeľná.
Rovnako platí aj opak. Natívna aplikácia sa automaticky nestáva dobrým produktom len preto, že používa Swift alebo WinUI.
Softvér súťaží na úrovni produktov, nie na úrovni frameworkov.
Optimalizujte firmu, nielen binárny súbor
Electron má skutočné náklady. Zaberá viac miesta na disku. Jeho základná spotreba pamäte je zvyčajne vyššia než pri malej natívnej aplikácii. Nepochybne existujú produkty, pri ktorých tieto náklady robia z Electronu nesprávnu voľbu.
Drobný pomocný program v lište menu pravdepodobne nepotrebuje Chromium. Ovládač zariadenia ho určite nepotrebuje. Hry, profesionálny zvukový softvér a aplikácie mimoriadne citlivé na latenciu majú iné požiadavky. A ak váš produkt bude vždy bežať iba na jednom operačnom systéme, natívny vývoj sa obhajuje oveľa ľahšie.
Obrovská časť moderného desktopového softvéru však do týchto kategórií nepatrí.
Tvoria ju komplexné rozhrania pripojené ku cloudovým službám. Musí bežať na Windowse a macOS a používatelia čoraz častejšie očakávajú aj podporu Linuxu. Musí sa neustále vyvíjať. Súťaží s produktmi, ktoré vydávajú zmeny každý týždeň. A zvyčajne ho vytvára firma s obmedzeným počtom vývojárov.
Pri týchto produktoch je produktivita vývojárov súčasťou výkonu aplikácie.
Electron umožňuje firme prijímať ľudí z oveľa väčšej skupiny talentov, zdieľať vývojárov medzi webom a desktopom, udržiavať jednu hlavnú aplikáciu namiesto viacerých, opätovne využívať ekosystém JavaScriptu, konzistentnejšie vydávať funkcie pre rôzne operačné systémy, podporovať Linux za náklady, ktoré by sa inak často ťažko obhajovali, a venovať viac vývojárskeho času zlepšovaniu produktu namiesto udržiavania paralelných implementácií.
Náklady Electronu ľahko zmeriate v megabajtoch.
Náklady alternatív sa vidia ťažšie. Prejavujú sa ako ďalší vývojári, duplicitné implementácie, dlhšie cykly vydávania, chyby špecifické pre jednotlivé platformy, ťažkosti pri nábore, organizačné silá, používatelia Linuxu bez podpory a funkcie, ktorým trvá o celé mesiace dlhšie, kým sa dostanú ku všetkým.
Tieto náklady sa v Monitore aktivity nezobrazia.
Pre firmu, ktorá softvér vytvára, však môžu byť podstatne vyššie.
Cieľom vývoja softvéru nie je vytvoriť najmenší binárny súbor.
Je ním vytvoriť najlepší produkt, aký vaša organizácia dokáže vydať, udržiavať a neustále zlepšovať.
Pre prekvapivo veľkú skupinu desktopových aplikácií zostáva Electron jedným z najefektívnejších spôsobov, ako dosiahnuť práve to.