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
Meteor Performance Monitoring - Beyond the Galaxy
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
- 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.
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
Tip: Meteor is easy to modify local versions of packages
- Does not scale – not true
- Coupled, restrictive, rigid – this has also it's benefits
- Out of date resources (docs, articles) – true
- Meteor 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 architecture
- Only for prototyping / side-projects – Meteor shines the most here, but it's not limited to just these cases
- Insecure – depends on used packages
- Not integrated with npm – not true anymore
- Too much magic / Fibers – yep in the beginnings. Fibers made sense when Meteor was born.
- Not popular enough – hopes for Meteor v2
- Unclear future
- No big corps – Disney
- Just 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.
- 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.
– solves complex MongoDB aggregations ("we have aggregations with over 40 stages (including 10 and more $lookup stages"). Also, have GraphQL integration.
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,
FlowRouter. Client-side react-router, reach-router
(alt approach from same authors as react-router, merging both in next release)
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
- Strong core community
- Lack of awareness of Meteor & Galaxy capabilities
- 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
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
meteor npm install
meteor npm run authserver
meteor npm install
meteor npm run calendar
Alim S. Gafar
Principal & Data Scientist at DIRA Market Dynamics LLC
CTO at Pathable, Inc.
Meteor Evangelist at Meteor Software
Meteor Today and Tomorrow
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
- 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
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.
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.
Experience: JSONSchema is usually superior.
Tip: Extend AJV with custom keywords
Process: Why Vazco develops uniforms?
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
- adhoc analysis
- analyze incident afterwards
- correlate with other metrics
- check perf regression & compare
Contact zodern to join private beta.
- ELB plugin? updates coming