Help Tiny: Post Your Most-Wanted Features for Meteor

It’s not just Arunoda, Evan You the creator of Vue was working at MDG at some point and he proposed having vue officially supported back in 2015, here is a thread on that topic. 4 years later and vue still hasn’t gotten an official blessing, imagine if Meteor adopted vue back then.

And the other interesting thing about that 4 years old thread is that people were asking the same questions being asked today, graphql vs ddp etc…a good leadership will end the speculation about those points and align the community going forward.

7 Likes

I’m seeing more and more local project teams choose Vue over React, and I suspect hooks and other issues in the React space will only accelerate that trend.

To be honest though, the Vue Meteor integration seems tighter than the React integration, which always felt tacked on, even if it wasn’t a first party effort.

3 Likes

I use react but I’d be the first to admit that Vue is more natural fit for Meteor, if it was adopted back in 2015, it’d have made Meteor the Laravel php of nodejs. But anyway, we look forward in the near future for better decisions.

2 Likes

What’s the performance of the Scalingo containers like ? ( I mean in relation to their Galaxy equivalents )

After moving from Galaxy the app has been enhanced heavily, so I can not directly compare. When we performed realistic load tests as I remember it was around 300 simultaneous connections per single M-Sized container with 512Mb RAM, before it started to swap, whereas normally it takes around 256MB. There are things that can be optimized though, as almost everything is currently reactive. And after the optimization, we look forward to Redis oplog as well. More details on Scalingo’s containers is here: https://doc.scalingo.com/platform/internals/container-sizes

And don’t forget there is autoscaling by default - you just set up the limit and conditions and the thing ‘just works’. And so far for us, over at least half the year when the app is live, it has been working reliable.

Also, I can not say enough good words for their tech support guys. You literally talk to experienced devops in real time and solve rather complicated things right away. With honest and direct responses, with sharing of their ideas, suggestions, plans etc. After this I just don’t care that much about their prices, as I know I have such great people behind my back. And another thing is that I want also to support local/smaller guys, and try to limit support of monopolies that are forming in the tech world.

2 Likes

Reading the recent posts in this thread, I am thrilled to realize, there are so many exceptionally smart people around within Meteor community, that share weighted opinions (there were really scarcity of such over some time). So even if Tiny manages to break things up (:crossed_fingers::crossed_fingers:), I start to have more and more confidence now, that altogether we will find ways to keep things moving forward. Thank you all for being around! :slight_smile:

2 Likes

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.
https://www.opscaptain.com/pricing

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