Proč si pro svůj další projekt vybrat (nebo ne) Meteor?

Výsledky nedávného průzkumu State of Js 2020 jsou k dispozici a jako dlouhodobý vývojář Meteor Jsem šokován tímto výsledkem* pro tak úžasný rámec. Přesvědčte se sami:


*Meteor se nachází vlevo dole v sekci "vyhnout se" ☢️

No, odtud bych mohl napsat článek v délce stránky, chlubit se těmito výsledky a konstatovat, že lidé rámec neznají nebo jej hodnotili na základě minulých (a zastaralých) zkušeností.

Tento článek má ale spíše za úkol zjistit, jak k celé této situaci došlo, kam Meteor směřuje a jak byste měli Meteor zhodnotit pro svůj další projekt.

Odmítnutí odpovědnosti:Nejsem spojen s Meteor Software, MDG nebo Tiny. Jsem stálým uživatelem Meteoru a aktivním přispěvatelem do komunity Meteor

Co je Meteor?

Pokud jste o Meteoru „nikdy neslyšeli“, například 5743 z 23,765 respondentů průzkumu (26,8 %), i když patříte mezi oněch 46,3 % „nezajímavých“ respondentů, mohli byste zvážit tuto sekci, abyste se seznámili s Meteorem.



Meteor je full-stack JavaScript framework , který přináší téměř všechny funkce potřebné pro vývoj aplikací JavaScript, ihned po vybalení. Full-stack zde znamená zejména použít JavaScript jako hlavní jazyk pro každou vrstvu zásobníku (klient, server, transport, databáze). Navíc je to také zcela open source a kód je licencován MIT.

⌨️ Vývojářská ergonomie

Meteor není jen JavaScript framework, ale také kompletní vývojový nástroj a přináší mnoho funkcí pro skvělý vývojový zážitek:

  • spuštění vývojového serveru; zero-config
  • provozování vývojového MongoDB, poskytování integrace DB s nulovou konfigurací
  • automatická přestavba vývojové aplikace při změně kódu, nulová konfigurace
  • vytvářejte výstup z jedné kódové základny pro server, klienta, starší klienty (IE a přátelé) a mobilní architektury s nulovou konfigurací / minimální konfigurací pro mobilní zařízení
  • transpilace nulové konfigurace; neustále používá nejnovější funkce babel pro podporu funkcí ESNext, kde je to možné
  • sbalení kódu do spustitelné aplikace uzlu, zero-config

💠 Ekosystém JavaScript

Meteor se také velmi dobře integruje se zbytkem ekosystému JavaScriptu:

  • vestavěná podpora pro hlavní rozhraní (React, Vue, Svelte)
  • vestavěná podpora pro typový skript (zero-config)
  • vestavěná podpora NPM, integrace jakéhokoli balíčku NPM na server nebo klienta (bez potřeby nástrojů, jako je browserify)
  • proto můžete použít alternativní databáze
  • a mají skvělou podporu pro hlavní testovací rámce
  • vytvářejte RESTful aplikace pomocí expresních balíčků nebo balíčků specifických pro Meteor
  • v podstatě můžete používat jakékoli externí rozhraní API jako v každé jiné aplikaci založené na uzlech

❄️ Jedinečné funkce

Kromě toho nabízí Meteor některé jedinečné funkce:

  • dobře definovaná vrstva datové komunikace (ve stylu RPC a/nebo vzor publikování a odběru) s vestavěným odlehčeným systémem reaktivity a vlastním protokolem přes WebSocket
  • připravený systém účtů založený na protokolu OAuth s minimální konfigurací
  • Mnoho funkcí s nulovou až minimální konfigurací je ve skutečnosti konfigurovatelných, takže nejste uzamčeni na výchozí nastavení
  • další ekosystém balíčků, které umožňují psát rozšíření s přímou integrací Meteor; tyto balíčky mohou také zahrnovat nebo rozšiřovat stávající balíčky NPM Ekosystém vlastních balíčků Meteoru
  • dokonale koordinovaná infrastruktura pro hostování aplikací Meteor

To vše znamená - můžete vytvořit projekt a okamžitě začít kódovat s nastavením zero-config. Ano, jako ty „vytvořit <name-of-app-clone> pod <x> minut." (V budoucnu přidám některé z těchto druhů výukových programů.)

Pokud jste již v tomto bodě připojeni a stav „vyhnout se“ jednoduše ignorujete, můžete se podívat na můj článek o nastavení <5 minut a začít hned. ⌨️

Pro všechny ostatní – dovolte mi trochu objasnit, jak k této situaci došlo.

Jak došlo ke stavové situaci „vyhnout se“

"Pokud má všechny tyto skvělé vlastnosti, proč jsou s ním lidé tak nespokojeni?" byla by moje první otázka při čtení všech výše uvedených chvály. Zde jsem samozřejmě zaujatý, protože s Meteorem od roku 2015 konstruuji JavaScriptové aplikace na produkční úrovni. Cesta k této situaci je však mnohem složitější, než by se dala zredukovat na samotnou technologii.

🚀 Začátky

Meteor jako technologie je vyspělý a velmi živý rámec. Původně byla vydána v roce 2012, získala velké finanční prostředky a velmi rychle rostla. Důvod:Snadný, hotový JavaScript fullstack s těsnou (a nulovou konfigurací) databázovou integrací; rozsáhlá vrstva načítání dat a vlastní protokol (DDP) založený na WebSocket pro automatickou synchronizaci dat.

Jeho hlavní činností bylo poskytnout infrastrukturu, která je nutná ke správnému propojení klienta se serverem a umožnit datovou komunikaci téměř v reálném čase přes WebSocket. Přišel také s vlastním ekosystémem balíčků, který umožňoval snadnou integraci opakovaně použitelného kódu a knihoven. V roce 2012 to byl velký obchod!

Služba Galaxy pro jednorázové nasazení (což byla také velká dohoda v roce 2012!) zahrnovala bezplatnou úroveň a v důsledku toho se z ničeho nic objevily nové projekty a balíčky Meteor, které ukazují, co Meteor může nabídnout.

Vývojářská komunita byla velmi nadšená z tohoto převratného ekosystému all-in-one, i když se již objevily stížnosti na neuspokojivou integraci NPM a uzamčení MongoDB. Zároveň se na trhu objevili noví hráči nabízející mnohem vyšší flexibilitu a škálovatelnost za cenu vyššího úsilí při vývoji a konfiguraci.

📉 Pokles

To způsobilo první pokles komunity přibližně na konci roku 2015 až 2016. Poté, co také odešla jedna z nejuznávanějších osobností komunity, mnoho lidí považovalo Meteor za „mrtvého“. V důsledku to také způsobilo, že se mnoho balíčků stalo neudržovaných/opuštěných a ještě více lidí bylo frustrovaných. Články a návody o Meteoru nebyly aktualizovány ani odstraněny a dokonce i v dnešní době lidé nacházejí zastaralé návody, které ve skutečnosti nefungují a padají, což vede jen k větší frustraci. Na obchodní straně také zmizela bezplatná úroveň na Galaxy, a to kvůli nákladům a menšímu generovanému příjmu.

Mezitím skupina Meteor Development Group (MDG) odvedla vynikající práci, protože integrovala technologii nejhlubšího okraje (ESNext) ještě předtím, než byla přijata mnoha dalšími hlavními frameworky v naději, že znovu získá trakci. Kromě toho pracovali na všech hlavních nedostatcích a od vydání po vydání frameworku v roce 2017 získávali „superschopnosti“.

Chcete-li zobrazit časovou osu, přejděte dolů na blog, kde najdete starší články.

Bohužel už se to všechno nevrátilo a předpokládám, že mnoho lidí ze starých časů stále myslí na Meteor z doby, kdy všichni odešli. MDG se začalo zaměřovat na své další podnikání, Apollo GraphQL, které se stalo velkým úspěchem a bylo také dobře uznáváno respondenty průzkumu.

S tímto posunem zaměření se komunita také cítila být ponechána sama a spokojenost s Meteorem klesla i mezi jejími vlastními uživateli. Tento efekt nastal v letech 2018–2019 a koreluje s 10% poklesem spokojenosti v průzkumu.

🧑‍🏫 Co se z toho můžeme naučit?

Přestože mnohé z těchto dříve popsaných efektů jsou sociální povahy (komunita, důvěra, komunikace, vztahy s veřejností, financování a ziskovost), důsledky se přímo odrážejí na technologii samotné. Poškozená je značka, ne nástroj. Software za značkou může fungovat tak stabilně a spolehlivě, jak je to jen možné, a má nejslibnější funkce, ale jakmile je značka poškozena, je velmi těžké zaujmout objektivní pohled na technologii.

Tento proces samotný je také velmi těžké zastavit a nevinil bych za to MDG, protože právě v tomto procesu dali maximum, aby frameworku poskytli tolik úžasných funkcí, v podstatě zdarma (Meteor má licenci MIT).

Všichni bychom se z toho měli poučit, jak křehký může být ekosystém a jak je technologie propojena s okolním sociálním kontextem.

📈 Je tu zotavení!

Naštěstí budoucnost Meteoru vypadá jasněji, než jak celá tato situace právě teď odráží.

Za prvé, komunita Meteor vytvořila na konci roku 2018 novou organizaci GitHub (pojmenovanou Meteor Community Packages), aby udržovala oblíbené a široce používané balíčky aktualizované a zároveň nabídla zpětnou kompatibilitu a určitý druh polooficiálního stavu. Toto byl první krok k obnovení důvěry v celý ekosystém a nyní je dobře uznávanou součástí celé komunity vývojářů Meteor.

V roce 2020 Meteor převzala společnost Meteor Software, která je financovaná společností Tiny Ventures, takže MDG se může soustředit na svůj nový hlavní byznys s Apollo. Meteor Software nabídl silnou spolupráci s komunitou, kratší cykly vydávání a vizi budoucnosti Meteoru, která se s nadcházejícím hlavním vydáním 2.0 stává realitou.

Byl zaveden velký upgrade použitím React Native jako alternativy k cordově při zachování všech výhod, které Meteor nabízí. Hostingové plány se také změnily tak, aby zahrnovaly cenově dostupnější plány a slavný bezplatný plán je opět zpět!

Jak se vypořádat s tímto stavem „vyhnout se“?

Poznámka:v následujících částech mluvím v "my", když chci zmínit, jak se komunita Meteor snaží situaci řešit. Není to 100% reprezentativní pro každého, ale snažím se co nejlépe odrážet své postřehy z chatů a diskuzí, závěry a akce.

Se vším velkým vývojovým úsilím posledních let jsme jako komunita Meteor šťastnější než kdy předtím. V důsledku toho jsme byli - opět - zklamáni výsledky průzkumu, ale musíme se s tím prostě smířit jako s realitou.

Průzkum by také neměl být obviňován, protože byli k technologii zcela neutrální. Ve skutečnosti se to již samo o sobě prokázalo – průzkum je postaven pomocí VulcanJs, frameworku, který staví na Meteoru a běží na hostingové službě Galaxy! (Vsadím se, že jste to nevěděli nebo si toho nevšimli.)

Jsme si také vědomi toho, že Meteor má stále co zlepšovat:

  • motor Blaze (vlastní frontendový engine Meteoru) nebyl dlouho aktualizován
  • mnoho balíčků má stále závislosti na podtržení, lodash, moment nebo jQuery
  • stále existuje mnoho neudržovaných balíčků, které jako takové nebyly označeny
  • Stále existují lidé, kteří nacházejí zastaralé články a návody používající velmi staré verze Meteoru, což vede k pádům nebo neočekávanému chování, a tím nakonec k frustraci
  • témata jako JAMStack, serverless, mikroslužby a SSR jsou stále spíše témata na střední až expertní úrovni a vyžadují hlubší pochopení toho, jak Meteor funguje, což může vést k dojmu, že Meteor není schopen pro tato témata

Zejména poslední bod by mohl mnoho lidí přimět k tomu, aby zvážili, že se Meteoru vyhnout, jednoduše proto, že je to to, co je v současné době velmi žádané. Komunita a tým Meteor Software si toho jsou velmi dobře vědomi a neustále vylepšují rámec.

Z tohoto pohledu bych rád přešel k argumentům pro a proti Meteoru z pohledu začátečníka, pokročilého a profesionálního vývojáře.

Kdy byste měli uvažovat o Meteoru

Víme, že tento průzkum má určitý dopad, zejména na lidi, kteří v současnosti hledají výběr technologie, která by vyhovovala jejich případu použití a požadavkům.

Pokud se vás to týká:nevyhýbejte se Meteoru! Pojďme k lepší části a podívejme se, co vám Meteor může nabídnout.

Jako začátečník

🚀 Největším profíkem pro Meteor jako technologii je to, že ji můžete rychle nainstalovat a začít okamžitě, aniž byste se museli starat o věci, jako je sdružování a komunikace mezi serverem a klientem. To přináší rychlé výsledky a umožňuje vám soustředit se na svůj kód a zlepšovat své vývojářské dovednosti krok za krokem.

🤝 Meteor nabízí integraci pro téměř všechny frontendové rámce/knihovny, kde jsou integrovány alespoň ty hlavní (včetně štíhlých!). Podívejte se na tohoto <5minutového průvodce nastavením, který vám umožní snadno vytvořit nový projekt React nebo TypeScript.

🔒 Máte plně funkční autentizační systém s téměř nulovou konfigurací ihned po vybalení. Auth systém je založen na oAuth a můžete snadno integrovat přihlášení třetích stran (například přes ).

📚 Průvodce a dokumenty API jsou vyčerpávající a pokrývají vše, co potřebujete, od základních příkazů až po osvědčené postupy. Kromě toho existují ve skutečnosti velmi dobré tutoriály pro mnoho témat, které vám pomohou stát se středně pokročilým.

💪 Komunita Meteoru je velmi vstřícná a nápomocná. Od roku 2015 a dříve je zde velké množství aktivních členů. Máte-li jakékoli dotazy, řekněte ahoj ve fóru a najde se někdo, kdo je připraven pomoci.

Jako meziprodukt

Na server a/nebo klienta můžete integrovat téměř jakýkoli balíček NPM. To vám také umožňuje používat jinou databázi, jako je PosegreSQL nebo redis.

Služby RESTful můžete vytvářet paralelně s metodami a publikacemi Meteor pomocí vestavěných obslužných rutin připojení express nebo jeden z mnoha balíčků pro REST.

📦 Můžete se spolehnout na to, že komunitní balíčky Meteor nabízejí stabilní a udržované balíčky vysoké kvality.

🍃 Použijte dynamické importy k minimalizaci velikosti balíčku a optimalizaci aplikace Meteor pro použití PWA.

🧪 Můžete integrovat téměř všechny hlavní testovací rámce (testování jednotek, testování integrace, e2e).

🚀 Můžete nasadit jedním krokem do cloudu aplikace Meteor. Pokud chcete hostovat sami, můžete použít Meteor-up pro jednokrokové nasazení.

📱 Můžete nasadit na mobilní architektury ze stejné kódové základny, kterou používáte pro vývoj webové aplikace. Můžete si vybrat mezi Cordova nebo React Native. To ušetří spoustu času a správy mezi více kódovými bázemi.

Jako profesionál

🤝 Meteor velmi dobře spolupracuje s GraphQl přes Apollo, které přichází se speciální podporou Meteoru.

🏘️ Škálování není žádný problém (už), protože můžete snadno používat všechny funkce MongoDB, stejně jako balíčky pro clustering, nasazení bez výpadků nebo databáze jako Redis pro ukládání do mezipaměti nebo oplog-tailing.

🔄 Meteor se integruje do většiny (pokud ne do žádného) ze známých poskytovatelů CI/CD potrubí a můžete je snadno nasadit z akcí GitHub.

🔀 Meteor provádí přesné dělení kódu, dokonce i s balíčky, takže můžete psát izomorfní kód, který funguje na serveru a klientovi, aniž byste vytvořili katastrofu závislostí.

📦 Velmi brzy bude mít Meteor výměnu horkého modulu (HMR) a otřesy stromu s nadcházejícím hlavním vydáním 2.0.

🤑 Na závěr je třeba říci, že existují společnosti, které se svými produkty a službami na základě Meteoru podnikají skvělé a ziskové obchody. Nejnovějšími příklady jsou Qualia, která nedávno získala 65 milionů, a CodeSignal, která nedávno získala 25 milionů finančních prostředků. Kromě nich existují další společnosti a oficiální partneři.

Kdy byste se měli Meteoru vyhnout

Jsou situace, kdy se možná budete chtít Meteoru vyhnout. Je těžké být objektivní jako pro-Meteorový vývojář a doufám, že následující je co nejvíce nezaujaté.

Jako začátečník

Ve skutečnosti není moc co říct začátečníkům, aby se Meteoru vyhnuli, protože má tak nízkou bariéru vstupu, že neztrácíte žádný drahocenný čas svého života. Vyzkoušejte <5 minut úvodního průvodce a vytvořte jednoduchou aplikaci v několika krocích.

👔 Pokud však máte obavy o získání zaměstnání, můžete se poohlédnout po jednom z poměrně oblíbených frameworků. Šance získat práci jako vývojář Meteoru není špatná, ale pokud potřebujete získat práci co nejdříve a chcete zvýšit svůj dosah jako potenciální zaměstnanec, může vám spíše vyhovovat některý z populárních frameworků. Je tomu tak proto, že většina společností, které hledají v oblasti NodeJs, bude většinou vyhledávat talenty v oblasti SSR+HTTP a u Meteoru tyto koncepty opravdu nejsou zahrnuty do začátečnických témat.

📱 Pokud máte v úmyslu vyvinout mobilní aplikaci, pak na první pohled může být velmi lákavé použít funkce Meteoru „jednou nasazení kódové báze do mnoha architektur“. Problém je spíše pod kapotou (pokud používá Cordova), když konkrétní pluginy pro nativní integrace nefungují podle očekávání. Pro začátečníky to může být skvělá showstopper, protože jejich ladění může být někdy velmi frustrující a časově náročné.

Jako meziprodukt

🔍 Pokud máte v úmyslu provádět mnoho SSR+SEO+HTTP bez potřeby reaktivity (jako například v e-commerce), pak by vám možná vyhovovalo jiné řešení, které se již zaměřuje na tyto části.

⭐ Pokud hledáte uznání svých příspěvků s otevřeným zdrojovým kódem, můžete být frustrovaní, když váš opravdu skvělý balíček zůstane po dlouhou dobu <100 hvězdiček.

📡 Také, pokud vaše cílové publikum žije v oblasti se špatnou šířkou pásma a stále jste nezvládli všechny vnitřnosti zpracování dat Meteoru, stále můžete být frustrováni optimalizací aplikace pro nízkou šířku pásma. Optimalizace pro menší balíček na oplátku vyžaduje více než jen třesení stromů (Meteor 2.0) a dynamické importy – vyžaduje také vědět, kdy a kam je umístit, aby váš balíček aplikace mohl inteligentně „růst“ v průběhu doby používání.

🧪 Pokud opravdu máte v úmyslu naučit se architekturu aplikací NodeJs od začátku nebo se cítíte poctěni všemi abstrakcemi, které Meteor přináší, možná budete chtít začít s prázdným projektem uzlu a prokopat si cestu. Bude to velký problém, ale také se naučíte hodně o NodeJs a možná brzy začnete vytvářet svůj vlastní framework.

📁 Zvedání těžkých břemen na souborovém systému je s Meteorem ve vývojovém režimu velká bolest. Je to proto, že Meteor vytváří místní aplikaci uzlů pokaždé, když se změní váš kód. Tyto výhody však velmi komplikují práci s balíčky zaměřenými na souborový systém, protože cesty ve výstupu sestavení jsou velmi odlišné od vývojových souborů a přepínání kontextu vám může snadno způsobit bolest.

Jako profesionál

🚫 Některé základní funkce Meteoru mohou být zakázány omezeními projektu nebo požadavky auditu.

Například:Zatímco autentizace Meteoru je jednou z jeho největších výhod, může to být také problém v profesionálním kontextu, například když audity neudělují způsob, jakým jsou uloženy tokeny Meteoru nebo je vyžadována velmi specifická metoda ověřování, na kterou máte v úmyslu psát. tvůj vlastní. Totéž platí pro WebSocket nebo implementaci (otevřeného) protokolu DDP.

👔 Je těžké najít zkušené vývojáře Meteor, kteří jsou zdarma k pronájmu, ve srovnání s jinými frameworky, jako je další. Pokud jste vedoucí týmu a musíte se rozhodnout pro framework s vysokou nabídkou vývojářů na trhu, pak by to již mohlo být k.o. kritéria pro vás.

📦 Meteor se bude silně spoléhat na svůj systém balíčků a rozhodnutí o tom, kam umístit společný kód (balíček NPM vs balíček Meteor), musí být učiněno brzy, jinak skončíte v potížích, až se vaše kódová základna rozroste nebo se připravíte na rozdělení svého monolitu do služeb. . Před plánováním je nutné hluboké porozumění systému balíků Meteor a architektonických omezení a pro váš projekt nemusí být proveditelné získat tyto zkušenosti v daném čase.

🔒 Navíc, pokud nechcete žádnou úzkou technologickou závislost na rámci nebo ekosystému nad rámec použití NPM k vybudování vlastního zásobníku, pak Meteor nemusí být vhodný.

Shrnutí

🔍 Stav Meteoru 2020

Doufám, že článek shrnul současný stav Meteoru, jak k této situaci došlo, jeho silné a slabé stránky a jeho okolní ekosystém. Jako technologie dobře vyzrála, ale její značka utrpěla velkou ztrátu na reputaci. Mezitím změnil vlastníka a vrací se zpět na trať s novou vizí a neustálými zlepšováními.

🔭 Co přinese budoucnost?

Vývoj Meteoru 2.0 je v beta rc fáze a dlouho očekávané hlavní vydání vyjde velmi brzy! Nedávný vývoj v rámci komunity a spolupráce s Meteor Software slibuje mnohé. Jestli se to odrazí na letošním průzkumu State of Js, zůstává nejasné a myslím si, že první dopady tohoto vývoje začnou spíše začátkem roku 2022. Do té doby doufám, že tento článek poskytne jasný a objektivní pohled na stav Meteoru a v roce 2021 a poskytuje vám cenné informace, abyste se mohli rozhodnout, zda použít Meteor pro svůj další projekt.

👍 Proč si pro svůj další projekt vyberu Meteor

Dovolte mi přidat několik závěrečných a vysoce osobních slov.
Jako dlouholetý uživatel Meteoru jsem velmi spokojen s rychlostí, stabilitou a komfortem při vývoji i nasazení. Z pohledu DDD mi Meteor přináší veškerou infrastrukturu, kterou potřebuji k tomu, abych se mohl plně soustředit na svou obchodní logiku, a přitom stále mohu zavádět svá architektonická rozhodnutí, abych vytvořil druh aplikací, které potřebuji. Většina mých aplikací je bohatá na klientské funkce a náročná na komunikaci server-klient, což jsou případy použití, kdy Meteor dokonale vyhovuje mým požadavkům. Neexistuje žádný jiný rámec, který mi v současné době pomáhá realizovat mé projekty rychleji a zábavněji.

Děkuji @storytellercz a @filipenevola a všem ostatním členům komunity Meteor, kteří mě podpořili při psaní tohoto článku.


Pravidelně zde na dev.to publikuji články o Meteoru a JavaScript . Pokud se vám líbí, co čtete a chcete mě podpořit, můžete mi poslat tip přes PayPal.

Můžete mě také najít (a kontaktovat) na GitHubu, Twitteru a LinkedIn.

Držte krok s nejnovějším vývojem na Meteoru tím, že navštívíte jejich blog, a pokud jste do Meteoru stejní jako já a chcete to ukázat světu, měli byste se podívat do obchodu Meteor merch.