Help Tiny: Post Your Most-Wanted Features for Meteor

Yes, even internally they are very close so. Even so much that one can implement Tracker in terms of Vue.

1 Like

Most wanted features for Meteor:

Feature 0: Release Meteor 1.9 with Node.js 12 support ASAP

A much faster V8 JavaScript engine and support for worker_threads, Bigints and TLS 1.3 provides performance, scalability and security benefits to everyone.

Please allow @benjamn to keep working on this without interruption as he is very close to completion.

Feature 1: Improving MongoDB Oplog Tailing Mode Scalability with Minimum Result Fetch Interval Setting

This is critical for improving the scalability of Meteor apps that use MongoDB in Oplog tailing mode

The Meteor MongoDB code needs a throttling feature to set a minimum time interval between successive result set fetches for a given reactive query. This allows the developer to imposes a hard limit on the maximum update rate of a given reactive query.

This would greatly reduce CPU and memory usage for reactive queries and reduce network bandwidth when those reactive queries are published and subscribed to by clients.

In many cases, it is not necessary to fetch updates at top speed in response to every change. For example, if we are using a Mongo publication to update a user interface component like a table or map or chart on a web browser page, we gain nothing from updating it more than say once per second.

A new option minResultFetchIntervalMs would be added to Mongo.Collection.find(), which represents the minimum allowable time delay in milliseconds between successive result set fetches for a given reactive query.

For example, a publication that can send reactive updates at a maximum rate of once per second would have a minResultFetchIntervalMs of 1000. A maximum rate of twice per second would be a minResultFetchIntervalMs of 500 and a maximum rate of once every 5 seconds would be a minResultFetchIntervalMs of 5000 and so on.

Equivalent functionality has existed in the mysql-live-select package, the key component of the Meteor MySQL integration since the beginning. It has been crucial in allowing our reactive Meteor MySQL apps to scale. I feel compassion towards people using MongoDB and also want them to have a similarly good experience like we currently have with MySQL.

I have written this up on Github:

Feature 2: A Meteor accounts package that is decoupled from MongoDB.

Please introduce an abstraction layer in the code to decouple the database code from the Meteor account logic.

One simple starting option is to modify Meteor accounts to use a virtual/overridable Collection class instead of Mongo.Collection, so the developer can use their own database-specific code to implement collection methods like find(), insert(), upsert(), update(), remove() etc.

Feature 3: Minimongo secondary index support

At the moment, there is a third-party partial implementation of Minimongo secondary indexes provided by the experimental package helfer:minimongo-index. It only speeds up point queries but not sorting operations, but perhaps this code could be used as a starting point for a complete implementation.

This has been on the feature requests list for a long time:

Feature 4: Renew MDG commitment to Blaze

Back in August 2018, @hwillson brought a lot of comfort to the Meteor community with the following statement on behalf of MDG. I urge Tiny to renew this commitment.

Feature 5: HTTP/2 Websocket Support

Node.js V10.12 added RFC 8441 extended connect protocol support to allow use of WebSockets over HTTP/2.

The main performance benefit is that a single HTTP/2 connection can multiplex requests and WebSockets.

11 Likes

NativeScript integration. It would be nice to be able to connect to a Meteor server over DDP using NativeScript.
Support for the latest version of Mongo and aggregations without meteorhacks:aggregate.
I don’t think there’s a need for shiny new tutorials, but rather maintaining the ones that exist. I pulled the latest todos and npm audit shows 53 packages with vulnerabilities and tests are failing. It would be nice if there was an updated version of this classic tutorial for Blaze, React, Vue, iOS, and Android. I would also like to second an updated version of Discover Meteor.
Official Discord meteor community. I appreciate and have greatly benefited from Vue’s Discord communities. It’s easy to ask for help, assist others and stay up to date on changes. The Meteor Chef is in maintenance mode and had a popular Slack channel that is mostly inactive. Ownership of an unofficial Discord community was handed off last month and it’s pretty quiet in there too. If one was official, maybe it would be more active.

1 Like

Spot on! There are lots of conflicting opinions on how to proceed and which changes/features to prioritize. So, let the pros decide.

1 Like

Thanks, that’s good to know. We’ve checked them out a few times but the thing that’s always put us off is the data centre they use isn’t part of one of the big-3, so we couldn’t launch our atlas DBs there, so it means we’d have to contract server & DB with them. I agree with you though about supporting the smaller guys, if only it was easier. BTW - I love that they have a public roadmap on trello :+1:

1 Like

Here is another potential strategy:

  1. Reduce FUD by giving community clear commitment for long-term core support
  2. Update the site/brand to explicitly endorse React, Vue and Svelte (and Blaze for backward compatibility)
  3. Fix the pricing of Galaxy to appeal to entrepreneurs (at least match DO price), and decouple hosting from monitoring for extra revenue
  4. Empower the open source contributors and package maintainers to handle the other features (I suggested adding feature voting page with sponsor influencer points)
  5. Partner with companies that uses Meteor for contracting (e.g. Cult Of Coders) and support major open source Meteor projects (Vulcan,Wekan, RocketChat etc.) they’re your marketing front
  6. Grow & Profit
6 Likes

That was actually a thread I made, not sure Evan ever really endorsed it considering he left MDG just a month or so after the post. However, yes, meteor should have official Vue.js support.

5 Likes

I actually looked in to the internals of Tracker to see if something could be adjusted there to make programming for React’s concurrent mode a bit easier (right now it’s super hard for a couple of reasons). I found an inversion of control that makes that difficult - each “Dep” maintains its own internal list of observers at the dep itself, not in the computation. I thought (without going deep enough to know if it’ll really solve the problems I’m trying to solve) that if the deps were either moved to the computation directly, or maybe if we replace the dep store with a weakSet or something like that, we might be able to rope the JS GC engine in to do cleanups for React’s discarded renders. The idea being that if the only references to those observers (or to the computation) is in the discarded react instances themselves, they should eventually get cleaned up by the GC. But that would all take a lot of testing - and either a fork of Tracker, or at least an extension.

3 Likes

The reverse was also possible. Evan endorsed it heavily internally, MDG made its position clear (similar to what he posted), and then he left because of conflict of interests

OpsCaptain already provides Meteor.js hosting via Git or CLI deployment and it is only $7 for a 1GB container and you also get a 1 GB MongoDB only $2 more expensive than DO. Infact, we are the cheapest Meteor.js hosting on the market. If Galaxy pricing is an issue, that shouldn’t be a problem for entrepreneurs as OpsCaptain is available. Just saying. Sure we do not have a fancy metrics graph and do not scale out but we are very reliable and get the job done for entrepreneurs just starting out. We are working on the scaling out and load balancing part.

4 Likes

That is good to hear, but the point is to bring money back to Meteor so it can further be developed…

1 Like

Npm packages are fully supported, but Atmosphere packages are a lot more powerful and provide actual value. I would not give up Meteor’s own package system.

Blaze works and is designed for Meteor’s reactivity system. Lots of Meteor apps in production are using Blaze. Unless Blaze somehow becomes a major blocker in adopting some core improvements to Meteor itself, I don’t see the point in dropping official support for it, other than making lots of paying Galaxy customers very upset.

I could always appreciate faster rebuilds, but to me they are pretty darn fast already. I’d like to hear more about your wish for zero config, since Meteor pretty much is… zero config? Or is it not? HMR would be great, even if it’s implementation would have some deficiencies.

Agree! I still cannot understand why they didn’t use this synergy to their own benefit.

My own wishlist

  • Tree shaking / dead code elimination
  • Meteor-quality developer friendly support for web workers and service workers, with mitigations against the most common footguns
  • Stick to the commitment towards backwards compatibility like we’re used to: which means also not dropping support for Blaze
  • Modernizing core packages, mongo first comes to mind
  • Better marketing, community engagement, social media interactions and just… communicate.

In general, I think a nicely paved path towards smaller, leaner bundles would be a great move. This would open up Meteor as a viable platform for more than just “web apps”, the domain where Next, Nuxt, Gatsby and soon Sapper are the current go-to’s.

Last but not least, why Galaxy doesn’t provide a managed database that just works with Meteor is… beyond me :man_shrugging:

14 Likes

Hey guys, who wants to volunteer to summarize all posts? With the frequency of the same requests like Vue+Meteor (42), React (19) Blaze (2) …

2 Likes

Perhaps that would be a mistake. There have been many opinions which mention no actual package/library - do we leave those out?

Narrative and the collective voice of community expressed under this thread are more important than a (dare say) misleading list of packages.

1 Like

I’m sure you are aware of the work Cult of Coders have done regarding the integration of Apollo with Meteor. I agree, it’s not an official package by MDG, but it works very well and it is supported by one of the best Meteor developers out there: https://github.com/cult-of-coders/apollo

3 Likes

Well said, @arggh :clap:

1 Like

okay. I agree … opinions are the most important. Also, make syntheses, it can be effective for the next steps …

142 posts… I guess this is a good procrastination as any. :laughing: Give me some time guys.

4 Likes

Has Tiny posted anything anywhere about what they plan to do with Meteor? The fact we haven’t seen anything along the lines of “Hey we are Tiny, we love Meteor and want to push it forward.” is making the company I work for consider switching to Nuxtjs/Apollo. Subscriptions would be more work but then would only be used where absolutely necessary.

4 Likes

That still can be done with OpsCaptain around. It will be impossible and misguided for whomever runs Meteor to think they can control all the monetization avenues. For example Wordpress has their hosting and thriving but it doesn’t mean there are not like some 5 other dirt cheap Wordpress hosting companies out there. Believe it or not a $7 USD per app hosting strategy if MDG had pursued would have been a waste of their time because you are talking about a min of 10k apps to even make something decent. Which is simply a number of apps that does not exist in the Meteor.js community. MDG knows this but you guys sitting on the forums talking don’t. MDG is very smart do not underestimate this simple fact.

So yeah MDG can focus on the Apps generating revenue, OpsCaptain will focus on the apps just getting started and require a tight budget. I think this in the end helps the Meteor.js community than harm it.

2 Likes