The Meteor Blog is the official blog of the Meteor JavaScript framework, covering releases, roadmaps and technical notes.
HN links it for release announcements like Meteor 1.7 and 2.0 and the Tiny acquisition, and a commenter cites it to show Meteor is still actively developed.
About the first part of the question, Meteor is still a thing for several reasons:
* It's a project with a strong community (364 contributors) that still has traction among developers (+ 8 stars by day on average over the last month, check the numbers here https://bestof.js.org/projects/meteor)
* They keep moving in the right direction: moving away from their own package manager (https://atmospherejs.com/) to NPM, accepting ES6 syntax everywhere, client and server-side without config, enabling AngularJS or React for the front-end layer... Since Meteor 1.6 version, they use under the hood one of the latest versions of node.js.
* Other contenders with such a combination "no config / real time / full-stack JS" features out of the box have less traction (check some contenders here https://bestof.js.org/tags/fullstack)
Some great projects on GitHub are built on top of Meteor:
- https://rocket.chat/ a clone of Slack chat app
- https://wekan.github.io/ a clone of Trello app
- http://vulcanjs.org/ "The full-stack React+GraphQL framework"
The drawback is that the Meteor is quite opinionated about a lot of things, it's a monster of its own, blurring the boundary between client and server-side code. It can be difficult to debug, test, deploy and scale.
So there is no definitive answer about the question "Should I use it in production?".
The team behind Meteor is really committed to keep on moving forward, GraphQL and Apollo support are coming soon, the post about the latest…
Some of the criticisms of Meteor are out of date. Last year Meteor added exact code splitting, making it a cutting-edge and industry-leading JavaScript build tool. Also, the criticisms of Meteor as something that doesn't scale are out of touch with the current state of the product. Pre-2017 Meteor had difficulty scaling due to its method of oplog tailing wiht Mongo. But last year Redis-Oplog made that a thing of the past. With regard to SQL and other databases, Apollo addresses scaling concerns.
As a relevant data point, Qualia uses Meteor and recently raised $30M.
https://blog.meteor.com/dynamic-imports-in-meteor-1-5-c6130419c3cd
https://blog.meteor.com/modernizing-the-real-estate-industry-with-meteor-an-interview-with-qualia-founder-lucas-hansen-b3b70d2f5dea
https://www.forbes.com/sites/omribarzilay/2018/03/07/qualia-grabs-33m-series-b-led-by-menlo-ventures-to-simplify-the-home-closing-process/#5b6522067ccc
No. JS engines detect of eval in the AST.
It's why you can't rename eval and reference the current scope.
const eval2 = eval; (() => { const a = 1; eval2("a"); })(); // ReferenceError: a is not defined ---
The reason JS engines choose to share the closure record among all closures create in the function scope is purely for performance.
function f() { const a = {}; const b = {}; return [ () => a, () => b, ]; } Both functions share the same single closure record, referencing a and b.
JavaScript developers have rediscovered this over and over and over again.
* Meteor.js (2013) [1]
* My personal journey (2013) [2]
[1] https://blog.meteor.com/an-interesting-kind-of-javascript-memory-leak-8b47d2e7f156
[2] https://stackoverflow.com/questions/19798803/how-javascript-closures-are-garbage-collected
The fix is to implement the closures properly, by only closing over individual variable slots. It looks like the engines are implementing closures by closing over entire windows of slots--that is, if two functions have the same scope, they inherit the _union_ of the variables they reference as a single window/block of variable slots.
The original article has a much simpler explanation and solution: https://blog.meteor.com/an-interesting-kind-of-javascript-memory-leak-8b47d2e7f156
To learn more about closures than you ever thought possible, try reading this paper describing how closures are implemented in Lua: http://www.cs.tufts.edu/~nr/cs257/archive/roberto-ierusalimschy/closures-draft.pdf
> With most of the original Meteor Development Group team having moved on to Apollo GraphQL, it’s time to pass the torch to a new corporate sponsor that will make the promotion and growth of Meteor their full-time business.
https://blog.meteor.com/a-new-chapter-for-meteor-7b684320be4c
Meteor got sold to Canadian company TinyCapital (Dribbble, WeWorkRemotely), so it's under new leadership/management.
React is the heavyweight, no doubt, but it also feels heavy for smaller projects. VUE is a great option and believe it or not Meteor just announced 1.7 with at least one killer feature: Babel-free JS for modern browsers.
https://blog.meteor.com/meteor-1-7-and-the-evergreen-dream-a8c1270b0901?gi=c82300da60f4
It's good to see Vue gaining steam as more options = better fit per project.