Meteor Impact 2020
ℹ️ These are just personal notes that supplement the talks. They may not make perfect sense without seeing the talks themselves.
Disclaimer : I'm new to Meteor, so mistakes are possible probable.
Meteor Performance Monitoring - Beyond the Galaxy
Questions:
Open sourcing change streams? Coming soon
Hardest problem with scaling? Reactivity, solving by limiting the number of queries to Mongo, and by sharding (but that's hard to do with aggregations).
Meteor-style PWA and exact code splitting
3 places to update
ℹ️ Stopped watching at 10:00, not relevant to me
What is "Meteor Community Packages" group
Goals
Provide support and updates to important packages in the community space to prevent their abandonment. Support community cooperation and initiatives. Loose organization, no formal meetings, distributed.
Q&A
Funding? Just on personal level, not as a group. Via GitHub Sponsors. Spread the world in your company.
Topics: Advanced level; Using Nginx + Phusion passenger; Self-hosted MongoDB; serve static files with Nginx; semi-automatic deployments from GitHub
Talk not relevant to me
Meteor Community Survey 2020
Frontend framework poll (among just participants): 50% React, 30% Blaze, 15% Svelte
Data fetching : Majority still use DDP, GraphQL increasing, but slowly.
Redis Oplog is an indicator of large scale app.
more info Needs updates:
Tip: Meteor is easy to modify local versions of packages
Does not scale – not trueCoupled, restrictive, rigid – this has also it's benefitsOut of date resources (docs, articles) – trueMeteor community bubble – own community, slack, forum, ...Jan publishing articles to Dev.to Lot of space for improvement Long build times Zombie project status All–or–nothing approach – bit true, but depends on architectureOnly for prototyping / side-projects – Meteor shines the most here, but it's not limited to just these casesInsecure – depends on used packagesNot integrated with npm – not true anymoreToo much magic / Fibers – yep in the beginnings. Fibers made sense when Meteor was born.Not popular enough – hopes for Meteor v2Unclear future Lock-in No big corps – DisneyJust for real time apps Expensive hosting – Galaxy introduced cheaper tears, but possibility to host anywhere.Requests for LTS
Note: Jan is flaging deprecated packages.
Vazco - Our story with Meteor
CTO at
Vazco – Wroclav 🇵🇱
Maciej started with Meteor 0.4. No security at all. Now using Meteor for all new projects. Contributing back to the community.
Products:
Aleno – restaurant reservation. 5y on prod, Meteor from day 1, public REST, and GraphQL APIs (build on top of WebApp – underlying connect server). Works and scales well.Clozer – mobile app for sales people. Using Cordova. Enterprise heavy.For simple cases, Blaze is good. But React eco system is the main benefit.
github.com/vazco/sparrowql – solves complex MongoDB aggregations ("we have aggregations with over 40 stages (including 10 and more $lookup stages"). Also, have GraphQL integration.
Q&A
Experience? Usually don't need all of the features of Meteor (e.g. realtime reactivity), end up not using them, and going lean. Like the new approach of dropping deps from core,
Routing? FlowRouter. Client-side react-router,
reach-router (alt approach from same authors as react-router, merging both in next release)
SSR? Nope
Code Splitting - definitely, manually, using import()
Meteor v2? Like the approach
The State of Meteor Geomapping
Abigail Watson – medical background (2 medical degrees!)
Messy data problem, "not ideal" format.
👀Demo of vast amount of various mapping examples.
Marketing Meteor: Challenges and Opportunity
Marketing Meteor 📣
Encourage momentum Busting myths – caused mostly by inactivity Promo benefits Promo services – Galaxy Current state
Strong core community Lack of awareness of Meteor & Galaxy capabilities Done ✅
Establish core team – Renan, Filipe, … New Meteor website New pricing + free trial More transparency Communication: Podcast, Newsletter, Announcements, Twitter, Slack, Forum
Galaxy will be rebranded to Meteor Cloud, unified DX.
Hot Module Replacement (HMR) in Meteor
Micaiah Nissen , aka zodern
Hot Code Push
dev & production – had to be reliable CSS, but limited preserve some state with Reload package, but not all ATM enabled in app code. Coming soon to Cordova, Legacy web and packages.
The current build is compared with the previous build → HMR Server sends changes → Client applies updates → Build finishes → Other changes applied with Hot Code Push
View layers integrations
React – React Fash Refresh Svelte – zodern:melte Blaze – not implemented (for now, technically possible) How to authenticate with one user across many Meteor apps using a custom OAuth2 server
Jan Küster
Meteor's Account System – one of the biggest selling point
meteor add accounts-«our custom service«
git clone https://github.com/jankapunkt/meteor-auth-server-example
cd authserver
meteor npm install
meteor npm run authserver
cd calendar
meteor npm install
meteor npm run calendar
user:johndoe@example.com
pass:password
Used packages:
Learn more:
Alim S. Gafar
Principal & Data Scientist at DIRA Market Dynamics LLC
Peter Brown
CTO at Pathable, Inc.
Filipe Névola
Meteor Evangelist at Meteor Software
Meteor Today and Tomorrow
Filipe Névola
Today
Mature and business ready
Really information dense. Watch whole talk or slides.
Bart Sturm – TutorMudni – helping students to get into highly prestige universities
Juniors don't rely on experience, are aware of how much they don't know – maybe more curious.
Tip: Expose functions as Meteor methods for easy debugging by calling them via Meteor.call
Why Meteor?
Fast to get started Hot Code Push for immediate updates Flexible – can be used purely as Node server Productivity Driven Development vs Hype Driven Development – hype will not help get things done. Meteor wins at productivity.
Tight React hooks for Meteor data
Kevin Newman
react-meteor-data – feels "unmeteory", not tighly integrated
creating computation when component mounts, holds onto it for some time (1s) for retaining the computation.
Beware: "Subscription" in React world is more similar to Meteor's Computation/Observer
Meteor-state – hooks into Meteor reload package to avoid loosing state of Hot Push.
Note mapping directly over cursor (no .fetch()) – experimental ATM
useMethod is WIP (for methods, use useEffect for now)
react-loadable for code splitting on server.
Study: Suspense for Data loading
Suspense in a nutshell: "Throw promise up the component tree"
React.lazy with Suspense for code splitting is the future (right now, doesn't work for SSR mode)
Vulcan.js: a New Vision for Full-Stack Frameworks
Framework on top of Meteor
Projects using Vulcan:
Very active Slack channel
Components can be composed.
Cool Getting started guide.
Limitations of Meteor
Barrier to entry – people may dismiss "non-standard" node Dev Experience – small bits of friction, Storybook not working Vulcan Weirdness There will be Next.js Vulcan version
Tip: To make Storybook working with Meteor, you have to stub Meteor packages at the client with Webpack. (Ali)
Transition Vulcan from Meteor to Next.js
Honest answer: lack of scale, trust issues of future
Apollo is redundant with Meteor.
Vulcan brings Meteor philosophy to a broader JS ecosystem.
Q&A
Integrate into existing app? Bad idea to integrate, start over.
DDP? Vulcan doesn't use DDP
Future: package companion
source .envrc && setup
Stack: MobX, React, Blueprint css,
Custom performant JSON viewer
MobX is awesome with TS, not good with pure JS
🛠 Audio was cutting off a lot 😢
Blaze: today and moving forward
🛠 Weird technical issues
Schema? Form! Meet uniforms!
Motivation for Uniforms – there was no autoform for React
Whole company migrated to React.
Works with every schema (with "bridges" – simple-schema, graphql, json schema, ...) and with every theme (even custom ones)
2020/10: 50 contributors, 150 version, 420k downloads (of core)
Mature – 4y old.
Features
Why? Composability
Experience: JSONSchema is usually superior.
Tip: Extend AJV with custom keywords
Process: Why Vazco develops uniforms?
Questions:
Can TS interface be considered as schema? Same problem as GraphQL – no validation logic. Another problem – TS types are erased in runtime.
Comparison? For custom forms, it doesn't matter what you choose. It matters for automatically generated forms.
Meteor Community Packages now and future
Testing Blaze, Meteor Methods and Publications
Avoid temptation to make the tests too brittle.
Securing your Meteor Application
MeteorClub Security Checklist – good, but not enough ☠️dead
Issue: can be triggered from client
Issue: DDoSing server
TODO: links to repos
Tip: Request package also becoming obsolete
Production debugging for Meteor apps with Meteor-up & Monti APM
Micaiah Nissen, zodern
beware: debugging pauses the app, use logpoints
Continuous profiling
adhoc analysis analyze incident afterwards correlate with other metrics check perf regression & compare Contact zodern to join private beta.
Questions
ELB plugin? updates coming Resources?