Where I think Meteor is doing wrong with Blaze

I am not that sure but I think no other topic results in such an amount of discussions then Blaze does in the meteor community. So everyone in this thread is here because they love Blaze, to be more specific: the BlazeAPI, its concepts (e.g. separation of concerns and more) and the the template syntax (more or less)…

Its not about comparing Blaze with other Engines such as React or Angular, so please if you dont mind, open up or go to a thread with such topics. I think its more about how we will proceed with Blaze and what are the opinions and thoughts about the engine regarding MDGs decisions and the communitys wishes. I hope we all made it clear that we want Blaze to stay - one way or another (at least the “look & feel”, not necessary whats going on behind the scene). Furthermore we all see the need for improvements in Blaze.

And since forking is hip these days, why not releasing Blaze into the hands of the community to evolve. Its already decoupled from the meteor “core” since Angular and React had to fit in. Or MDG need to continue to work on it somehow. The only wrong way IMHO would be doing nothing regarding to Blaze.

8 Likes

Well, what is stopping the community? It’s MIT license after all…
I think in open source it has to go the other way around. First, there are community forks, some of them build new good stuff and get popular and ultimately MDG could give a recommendation or even merge it back in the core if they want to keep maintaining blaze. Then it will really be driven by what the people use and think is good.

1 Like

I think the issue here is that we are all “competing” for the same scarce resource: MDG time. So people who like Blaze are not satisfied with how MDG is not investing time into Blaze anymore (for example, myself, I do not have anything against investing time to support also other rendering engines, but I do not like that Blaze is not developed anymore, or that it would not be developed anymore). And people who love React would like that MDG would be investing more time into React and not Blaze (or would like that they would invest into other features, like SQL support, instead of Blaze, because they do not see the purpose of Blaze, now that they can use React). So we are confrontational because of this. If we knew that MDG has enough resources for everything then probably nobody would be objecting to having everything. As a consequence, our conversations center around the question which is better because we want to show to the other side why MDG should not be investing time into something which is less.

But maybe even if something is less, there might be some reasons to continue investing time into that. Many such examples were mentioned, like stability of the solid base to build upon (so maybe MDG should be investing time into fixing existing bugs), existing projects already developed or in the pipeline (which cannot just pivot), trust we have into MDG (we believed that 1.0 means 1.0 and that it is a LTS release). In some way it also switches MDG’s resources with resources of others: then others have to invest resources into migrating to React.

I do not have a new point to make, I just wanted to present another perspective for this topic.

(BTW, in this perspective the argument “React has Facebook and everyone else behind it” in fact means that yea, great, if so much resources are already being invested into React, then MDG maybe should be the one investing dedicated resources into Blaze, from the broader societal perspective of resource allocation. React does not need more, no? It will happen anyway, community will use it anyway, no?)

10 Likes

This was so fun to read. Thanks for writing it! I love it. How a good story can bring the point closer. :slight_smile:

7 Likes

I do agree with what you have said… But i cant shake the feeling that i get when react is being now pushed more and more. I have the same experience when i was fresh out of jquery when angular was the new wave…

OK let me try a different analogy - let me be 100% clear this is an un-official statement from me personally, not a representation of MDG or anything else. I don’t think driving a car is a great analogy here, because almost anyone can drive so it makes things look easy. Let’s talk about building a car.

MDG has built a car. The car can drive around, and has some really good times for 0-50 acceleration. It’s great for city driving, looks really cool, has a really sweet color of paint, really comfortable seats, etc. However, once you take it out on the highway, it gets a little scary - the car rattles a bit, you can’t really accelerate fast enough from the on-ramp, and some of the lights don’t quite work. Now MDG hasn’t put much work into this car for a while, and doesn’t have the resources to build a 2016 model. @mitar is all like, I’ll build the 2016 model for you, but MDG says this is our car model so no you won’t. So no one is building the 2016 model, and the community is concerned because they only have licenses for this particular model of car. Then @sashko tries to calm everyone down by explaining that there are some other 2016 model cars that are quite nice, and we could put the same paint, seats, and body on top of those, so there’s no point building a new car chassis and engine anyway.

Oh, and the other cars have some beta self-driving functionality, tons more repair shops and charging stations, and someone is already talking about bolting on wings so they can fly.

23 Likes

I keep hearing people keep making this point about Web Components, but Web Components doesn’t include reactivity. Using Web Components is by no means a panacea to the reactivity challenges that Blaze, React and Angular solve. The browser would need a Reactive Web Components API. So you’re suggesting we wait until they build React into the browser?

That’s why we need an official one. Please.

If MDG chooses to do it… Then that puts me at ease. At least there will be development going on Blaze. Nice interview http://info.meteor.com/blog/meteor-guide-interview by the way. :smile:

2 Likes

@sashko there’s a small problem with these 2016 models - they’re not as comfortable to ride around the town as that old model built by MDG. And there’s plenty of drivers who never actually have to ride it outside of their town and even when they do, it’s only few days in a year when they visit a family for Christmas. They don’t really want this 2016 model and somehow, the freshly developed wings make it pretty difficult to park in front of work office or shopping mall.

New paint, seats and body on top of the 2016 model that will make it behave as well on city roads as the old model would be great.

But as you said, that’s your personal opinion and we can’t take it as MDG’s word. So while the vision sounds really nice, it can’t really calm anyone.

For now, people are wondering if in a year or two from now they’ll still be able to buy new parts for their car if something gets broken.


I realize there’s lots of other topics MDG has to take care of. I know we can be pretty annoying with asking about Blaze. But other groups of interest are lobbying for their features too, so we don’t want to be worse. :wink:

10 Likes

…The thing is Angular and React made poor interface decisions. The Angular interface simply sucks. The React interface, though is necessary to achieve performance, is a lot more extra work than Blaze. So all these frameworks have all this extra technical minutia to do, whereas Blaze is basically the most natural “what you would expect” interface to have, minus the fact that it doesn’t have Components. That said, it essentially does thanks to @mitar’s Blaze Components. It’s a clean interface into what React complicates.

That said, performance is an issue, and Blaze 2.0 would have to solve that, perhaps by complicating the interface, but I get the feeling that David Greenspan would make a cleaner simpler interface than React yet again. React’s a bunch of extra work. That’s a fact we have to face. It’s also a fact that Blaze without a meteor-approved Components API steers developers into poorly organized projects. What Meteor has needed for a while now is a proper extensible Components AND Models system. Essentially classes for each. That way, as another commenter mentioned, new developers aren’t writing DB calls in event handlers, rather doing things like making calls to static methods of a model class.

So I’m saying in the “steer your into good practices/organization” argument is that what’s at stake is more than just whether MDG has the developer resources to compete with React–it basically is about time Meteor becomes a proper framework. In short, most of all the Meteor community needs the answer to this question: if we were to make a Rails-like interface for Meteor and the modern “Connected Client” application, what would it look like?

In many ways it’s been a smart decision to have a lower level essentially imperative API thus far. It’s allowed for a lot of possibility. It allowed us to build out all sorts of packages without feeling inhibited. But I think at this point where we have gotten an idea how most of our apps are built, it’s crucial to settle on a class-based API for basically everything you do in a meteor. A class for models, a class for view components, a class for stuff that happens on startup. U know, like the sorta automagical classes you see in rails where all you relations, aggregates (and in Meteor’s case, subscriptions!) are setup for you with a few terse lines.

It’s time for that sort of stuff. And my point is Meteor is moving full speed ahead and praying that this area, Blaze, templating/components, is all checked off. A year and a half ago they made Blaze and that was a big deal–they could now keep up (supposedly) with its at the time recent competitor, React. Then MDG spent the next year up until now focusing primarily on Galaxy. Now that that’s done, I get the idea they have yet again more future ambitions that they are hoping they can focus all their attention on. And believe me, we have all been there, and end up kickin the wall when competitors change the landscape and it’s time to essentially pivot the product strategy for our startup. That’s basically happening now. The question is whether MDG wants to face it or not.

I think before moving forward into things like SQL, MDG needs to rethink the entire interface into their product. And the reason I bring that up in the React thread is because what that includes is not just letting some other camp (Facebook et al) dictate our interface. The React interface is no good. We can do better than that. Blaze’s interface is fantastic. It just needed components, and it needs to be more performant. Whether I go so far to say it needs a “Native Strategy” I can’t quite say. But I would say we probably shouldn’t give up on Blaze just because it’s “Native Strategy” seems bleak.

But that all said, if MDG was to revisit the interface into their product, they may realize they do need to assign a lot more resources to this area, and may find that they do have time to make something competitive to React, better yet, that beats it. I mean come on now, the attitude here is so defeatist. Like, there is no way we can defeat facebook and React. I remain unconvinced about React. And a lot of the stuff facebook is doing: GraphQL, Relay, etc. I think it’s awesome the ideas they’re pushing but interface-wise all there stuff isn’t what I would choose. And I’m not alone–if you read the AMA on crater.io, you would read that David Greenspan feels the same about React. Facebook is truly pushing things forward–there’s no doubt about that–but they’re constantly choosing these funky unnatural interfaces. Did we really need to create .jsx? No we really didn’t. Why cant the code in the render method be in its own file and look more like HTML, basically Sideburns is working on? It can–facebook chose not to. Why can’t we maintain the flexibility blaze allows to manage state how we want, and Blaze 2.0 implicitly figures out more about what’s going on to enhance performance–i don’t want to have to pass functions around to keep state managed in one component! I want to manage state how I want to, I’m a big boy. React makes you do lots of extra work, and this is just one example. More can be done to optimize what’s going on underneath the hood for you. React instead just offloads all this extra technical minutia/work on you. It’s like: I don’t wanna manage memory, i wanna focus on business logic–that’s why we choose higher level tools like Meteor.

So my recommendation is MDG makes it first class priority to turn their “system” into a true framework, which steers you into writing good code through conventions, classes, etc. React does such “steering” for part of the stack. MDG should holistically determine their vision steering us into writing organized code for the WHOLE stack, and that requires not letting React dictate how it’s done.

Whatever MDG plans to get into now where they are copping out and saying they just give up on Blaze is bullshit. Blaze, the UI, templating, etc etc, is the gateway into the Meteor world. It’s the shiney door that once was the shiniest across the land that brought us all here in the first place. MDG now (seemingly) wants go focus on what’s in the castle and let the door rust, or rather, replace it with the same door everyone else has. And I’m not even against that–if we do that, we should marry completely to the evolving “Facebook React Stack” (that includes GraphQL, Relay, Webpack, maybe RethinkDB and whatever else Facebook adds down the stack). But unless that’s the plan, we should reinforce the “entrance” and “walls” of our “castle.” All of Meteor from Components to Models to various auxiliary Classes needs to be made into class-based system. It needs to answer the question: what would the Rails API look like on Meteor, given its presence both server side and client side???

Chasing SQL is not as important as this. MDG’s plan is likely all galaxy for a while longer, and probably is how it has to be so they can get some more money to expand the team. But MDG needs to wakeup and realize they need to make a class-based API for the entire stack, not just view components. Most importantly Models!

My final point is don’t give up on blaze just yet. I’m talking to the community and MDG who seems to be in the process of formulating their opinion/plan. Sideburns is getting us an interface into React similar to Blaze. If MDG joined that initiative full force, they could likely come up with something very good that makes this entire thread moot. Check out Sideburns right now if you havent already:

React vs. Blaze may be a false decision. It’s already at least halfway false after looking at Sideburns. They’re doing a great job at making React look identical to Blaze, or rather, making React be what’s powering a Blaze/Spacebars-like interface under the hood. So again, Blaze vs. React is definitely at least a half false decision thanks to Sideburns–my question is: How can we make it an all the way false?? (and that’s essentially a rhetorical technical question; i would like us to think about how we can technically accomplish that; I think we should help the Sideburns guys).

7 Likes

I also have an entirely different angle to look at the “React Fiasco” challenge we are all discussing here. I wrote this the other day in the AMA on crater.io but was late to the conversation. It was recommended to me to post it here. so here it goes:

There’s been a lot of talk here about React and its impact on Meteor/Blaze–what about RethinkDB and GraphQL?? In other words, following React farther down what is clearly their intended stack?

What about making a strong (public) long bet on the future of web development through these adjacent tools and MDG rallying behind it? The result would be strengthening challenging undertakings, specifically in the coordination of the teams behind the other such projects, i.e. getting as much help as we can from them to make Meteor something they want to integrate with (and early on). Why not break the mold, take a stand, make a hard break from their past strategy, and embrace would-be competing products: Webpack? React? GraphQL? RethinkDB? Their might be a stack already evolving here that can integrate quite nicely with Meteor if we get appropriate buy-in from these teams.

To make clear what I’m saying, here’s an example: the RethinkDB team right now is pondering deep integration of GraphQL (vs a higher level less-cool abstraction). The deep integration would come with so SO many benefits for developers using both tools. The Meteor community could help get them to make this difficult decision if we publicly make the decision to support it once built. Is that outlandish?

It seems right now the race to the Ultimate platform for javascript development is on the horizon and there are some clear winners–one MDG clearly and publicly has just realized: React. That’s what most the hubub in this conversation is all about. Well, React is on a path to be tightly coupled to GraphQL. RethinkDB is thinking about getting a piece of the action–though I’m worried they fear making that decision, and ultimately don’t make it.

We are all in search of the Ultimate Stack–that’s why we fell in love with Meteor. And it still is the only full stack solution for us javascript developers. So from where I’m looking at, React, RethinkDB, and GraphQL (and of course React Native, and likely Webpack) could be a major boon to Meteor as a whole if tightly integrated. For some of these (most noteably React Native) this is a no-brainer; it’s just gonna have to be done, and will be done.

For the ones I’m brining up (RethinkDB and GraphQL), the decision is less obvious. It’s too early. That could be a blessing instead of a curse. You have to think these companies/organizations/teams are too going through such decision processes. Meteor clearly has been struggling with developer resources, and they will continue to do so as long as they try to be everything to everyone. I’d much prefer some strong decisions on developing a more focused stack, even if it means pissing people off in the meantime. For example, kinda letting Blaze go (keep it as it is, and continue with bug fixes, but don’t keep upgrading it; promote it as a way for new developers to get started), and focus all their energy on the React world. They clearly have already started on this path–I mean they now have React integration tutorials on their site for goodness sake; that must say something. So why not double down on that decision and follow React farther down the stack. In my gut I feel that is the right decision; and keep in mind I’m someone who still uses Blaze and am just as unhappy about this React situation as many of you.

We need to use “The React Situation” to our advantage wholeheartedly, rather than fight it–that’s my main message. Something very smart and with more foresight than normal can be done here.

The RethinkDB stuff I’m mentioning might be pie in the sky, but that’s only one part. With some foresight, some boldness, Apple-esque decision making (i.e. making the hard decisions to focus just on a few things) and coordination with other said teams, MDG could let everyone know what their plan is ahead of time and prepare users for these features/integrations, but more importantly inspire developers from other teams/organizations to make sure it happens efficiently. I believe Meteor is the best platform out for full stack javascript development, and the funny thing is it’s likely to stay that way given how time-consuming we’ve seen it is to build such a thing. It’s only really competitor is what Facebook has brewing. Not to phrase it as a false decision, but basically we have the choice to embrace what Facebook is doing with the “React Stack” or be killed by it. That stack is already going downstream and will continue to do so.

Meteor could fill in a lot of missing parts (particularly server side, DDP, etc) it will take Facebook years to replicate (during which Meteor would otherwise endure a slow and painful death).

Meteor should become an “official friend” of the “React Stack.” Meteor’s always been about various tight couplings to be a complete stack tool. This wouldn’t be that much of a departure from their current development process, besides the fact that they would now be married to core components run by outside teams/developers for once. I’d prefer to see Meteor double down on this tightly coupled way of doing things rather than continue to fragment out into this sort of power grid it’s becoming that will support various flavors of SQL, various client side frameworks like React and Angular, different packaging systems like Webpack, etc.

It’s been absolutely amazing the # of integrations with Meteor has come about. It’s been absolutely amazing that such a full stack platform could support such a thing. That level of flexibility perhaps could only ever be possible thanks to the browser, javascript and Node. But anything that gets to big can also become a problem. That level of flexibility absolutely kills MDG’s focus, the meteor community’s focus, and definitely that of us developers/users.

The great thing about Meteor starting out was that there was very few decisions to make, besides the business logic of your actual app. Now we have so much power, but a disproportionate # of more decisions to make. If I was in the minority, it would just be one developer begging for his needs to be focused on. But I think I fit the profile of 80% of Meteor developers. For example, 80% of us probably could go without SQL. 80% of us would likely be very satisfied with super pro React and React Native integration (once we got over the pains involved with letting go of Blaze). So why not take it a step further and get married to RethinkDB and GraphQL. It’s likely only a matter of time before Facebook decides to make their own server side aspect and packaging system. You think they are just going to stop with GraphQL? No, they won’t. But I also doubt the differentiation they come up with in those departments will be that worth wild. I.e. they will likely be something comparable to Meteor. We could get to the point where we’ve been looking for a lot sooner. The corner stones–for the “Connected Client”–are going to be RethinkDB and React Native. We should follow their lead and get behind them.

2 Likes

Exactly. Because they were busy building solutions. Using Blaze.

Most of the time I don’t feel like I can contribute much to the discussions here, but this matter is too close to home. So here I am with my first ever post on these forums.

A couple of years ago we launched illustreets.co.uk, a web mapping application built with Meteor (for the curious ones, here is the interview with @sacha of Discover Meteor). If I remember correctly, MDG tweeted quite enthusiastically about us. It was the first app of its kind in this ecosystem and AFAIK, it remains the most complex GIS built with Meteor.

Lately, we have been working on a more advanced version of it. I could notice lately that Blaze was not getting much love, but didn’t pay much attention. I didn’t have a choice anyway - tens of thousands of lines of code have been committed already and no small part of that is being built around Blaze. Actually, most of the UI - which is far more complex than what can be seen in the current version - has been built long ago, when React was still pretty much a novelty. It is heavily based on the usual suspects - Bootstrap and jQuery, with Blaze running the show. If React gets the spotlight…

Actually, what am I talking about… so much of the new app is based on Blaze that even the thought of having to switch to a new UI paradigm sometimes in the next couple of years is scary. If I was to start today, React is something I would perhaps consider. Using it in an already built complex system? Not so much.

@mitar speaks for devs like us. “What we need Meteor for is a stable ecosystem, a stable base, even if it is not ideal, on top of which we can build other stuff”. We learn new tech every day and every week, so in itself, React is not too much to take in. Really, compared to all the other stuff that we do (think advanced spatial algos in R, GeoTools, Map/Reduce jobs in Hadoop, etc.) it is nothing. But our time is more usefully spent not learning the sexiest new JavaScript UI library.

MDG, please consider startups like us, and the time we’ve put into learning and developing around Meteor’s unique components: DDP, Blaze, etc. I know, you have no plans to drop Blaze soon, but not looking after it is just as bad. It just prolongs the time until we have to completely tear apart our frontend and put in a new one. With the backend built from microservices, most of them non-JS/non-Meteor, we might as well replace the whole JS framework when that happens.

Manuel Timita,
Architect illustreets.co.uk

25 Likes

Can we say, after 100 posts, there is a consensus in this discussion: the future of Meteor is component based?

3 Likes

yea, MDG, if we know you have no plans to keep up with Blaze, it’s basically the same as killing it today. We need to know you plan to fight the good fight with it. I remain completely unconvinced by React and these “rebuild the virtual-dom every tick” systems. What Meteor did with Blaze and tracker was and STILL IS phenonomal and better. They implicitly track data context, aka .props and tracker variables (cursors, session vars, reactive var, reactive dict, etc) implicitly tracks reactivity. You don’t need to pass functions from parent templates to child templates, jumping through all these hooks to work with almighty “STATE”! By very little additional syntax, Meteor implicitly knows which variables should trigger reactivity. This is genius and, interface-wise, a far superior system than React and all the extra work React has you do.

People keep saying, just look how many people are working on React and Angular, indicating it as a reason Blaze has no chance. Perhaps, React was so beautifully architected by David Greenspan that it chose the path of least resistance whereas as those frameworks did NOT. The whole virtual dom motif essentially makes it so you can’t imperatively interact with the dom like u used. That means basically every other javascript/jquery plugin in the world can’t be used with React. Sure there are hacks, but my point is all the work all these React developers are putting their time in is remaking everything such as Animations in the pure React way, when that simply doesn’t and shouldn’t be the case for many things; and is often more complicated. Doing animation in React is a lot more complex than using the non-documented/unofficial Blaze animation uihooks. …Anyway, the same goes for Angular. Just go to their new website–you can filter all their docs by Typescript, Dart, ES5, and ES6. That necessitates many more developers. That’s definitely not the path of least resistance. The point is the semi-walled garden that is Meteor allowed David Greenspan–just like us–to be far more productive than developers in the plain node world that gotta support a million more scenarios. Blaze does have a fighting chance! We just need to be vocal about it and make the right points about. We can’t act like we don’t get what’s good about it. I hear a few people saying that they like its simplicity. That’s a start, but that really is it’s selling point, and it needs to be further clarified: It’s not just that it’s simple; that almost makes it sound like a toy; it’s that it affords you the least amount of work to get the most amount of power. That ratio is near perfect in Blaze (again, minus the fact that it needs to evolve into a Components API where you can count on the value of this).

At the end of the day, only David Greenspan knows what we should do with Blaze. Correct me if I’m wrong, but he seems to have spearheaded blaze and did the vast majority of the coding. So what I’m saying is this: you know when you build something for a client, and currently functions great, but you know down the line it could run into some serious problems, and you have that fear lurking in the back of your mind. I think we have all been there. Right. So David has seen all the performance issues we have had with Blaze. The reality has been it was a great innovation what Meteor did with their reactivity system. I couldn’t believe it when I examined how they did it several years ago. However it’s always been kind of a big bet. A “big bet” that even MDG wasn’t sure how would pan out. And clearly we do have rendering issues. When lots of stuff is going on, it starts to behave funky, animations skip frames, timers are messed, etc. So the only reason not to continue with blaze is if David and MDG don’t believe they can surmount those hurdles. But if we do, I don’t see why we cant have a component system or even Blaze Native.

If Meteor wants to stay competitive, forget SQL, the options are 2 fold:

  1. double down on Blaze and take it all the way to Native, being willing to fight Facebook every step of the way:

or:

  1. join Facebook and the “The React Stack” completely. That means get married to GraphQL, Relay, Webpack, in addition to React, and perhaps replace Mongo with RethinkDB. Make a big bet and skip a step, willing to cut some of your losses.

But if MDG’s plan is to not take a stand, and just let us do whatever we want with the frontend framework, it will spell the end for Meteor. It’s just not going to work where the most important part of the stack–the part of the stack driving all the trends, i.e. the frontend–is anything less than the best. All the node developers will go to where they can use the best stuff. I think MDG is at the most pivotal stage in its life right now. It doesn’t seem to have the money to hire a team that can truly compete with React or Angular, which as everyone has pointed out is horrible given it is a full stack solution rather than just a frontend framework like the former 2. They are clearly banking on Galaxy to alleviate this situation. I do think MDG’s timing has been near perfect. Their execution near perfect. They couldn’t predict how fast this cambrian react explosion would happen, but Meteor has been basically right on time for the major stuff they have done, and the community has done wonders to fill in the blanks with basically every package you could need until then. Take a step back and think about the history of meteor and the last 3-4 years. We’ve wanted certain things like components to come sooner. I think we wanted Blaze sooner than when we got it. Same with galaxy. But given the realities of software, everything actually ended up being delivered right on time. I.e. not some ridiculous amount of time late, or that late at all. Just a little late, but exactly what anyone with any experience would expect.

So we are here with Galaxy. MDG is aiming to strike gold right now. Put yourselves in their shoes for a second–thats what I’m asking. They are aiming to turn that into a money making machine and asap. I bet you nobody over there is focusing on anything else. They know they have their bird in the hand, and they gotta make sure to snap its neck and cook it. We are essentially putting a wrench in their system, their plans. We are allowing React to do so. If I was MDG, my main priority would be to make this Galaxy system print me money, raise more money than ever at a higher valuation based on that fact, and then use money from both sources to quadruple the size of the team. And then 6 months from now, i’d blow whatever react is doing out of the water, and I’d focus back on the view layer, and the interface to their system. Make Meteor a true OOP system. Not this imperative gobbeldy goop we all be writing. Anyway, I’ve described that point above in detail. The point is they are at a pivotal time, need to make money, and then they have a lot of work to do, and not even on new areas, but on revamping the original areas. Meteor is basically like Ruby right now or PHP, i.e. a language with solid HTTP bindings (in Meteor’s case called: the “Connected Client”). They need to take their Ruby, and make the Rails. Overhaul that entire docs.meteor.com site like Angular.io has and make it feel like a million bucks. See what I’m saying everyone! The docs site f**ing blows. It’s low quality. They just finally got around to giving the rest of the meteor site a face-lift, but still the core set of documentation is not up to par. And the real problem is: the API it details there is not up to par. It steers novice programmers down the path of writing imperative code, whereas Rails steers you down writing solid object oriented code. All you guys obsessed with the functional trend du jour, just pipe down a sec, and recognize the benefits of a basic oop approach: short single purpose methods! Forget the problems of inheritance leading to brittle code for a second. Just having a consistent value for the this changes everything. Why? Look at most Meteor packages, its long procedural/imperative code you can barely understand, simply because well named single purpose methods are not frictionless to create. You write a helper vs life-cycle handler, what’s the value of this, eh!? Exactly. What’s the prescribed way to deal with models, relations, aggregates, etc?

Meteor is going to die because its API sucks. The messed part is that the javascript world has moved so far along so fast that Meteor basically needs to revamp the whole thing and one-up the competition if it wants to stay ahead. Again, reference GraphQL, Relay, etc. The competition is fierce. I think Meteor has lost its foresight. It needs to regain that. Thats what I’m saying here. I don’t like these Facebook solutions. Their interfaces are not correct. I rather Meteor keep us as is for a year, but release a 2.0 a year from now that perfectly addresses all of this and is far beyond the competition, and exhibits some of the same prescience we see the various camps within facebook exhibiting.

In short, a major rethink is what Meteor needs. MDG has likely wanted to stay blind to everything that is going on outside of Meteor. You hear little blurbs like in that AMA the other day on crater.io about how they just started looking into Webpack and the like. You get the idea that the node community outside of Meteor has passed them by. To be honest, that’s very much has happened to me. So I could be projecting. But the point is it’s a likely thing to happen given the scenario: open source software pulls away from main open source thread/branch and builds semi proprietary solution. We have detached from the main branch (of Node). And now we are finally paying the price! That’s the point here. Remember the days when everyone was questioning how we would implement our own package manager system, and use Fibers instead of async, etc!?!? Well, they were all basically saying: “watch out, something like [what is happening now] might happen.” And it has. We are too far away from the main branch to easily incorporate anything that’s going on in it, and we are paying the price.

That said, one fix-all might be more closely aligning our isomorphic package manager with what’s going on with webpack, es6 modules, etc. At the very least if we could make it so incorporating all this stuff is just as easy as in plain node–even if we had to still be married to a few things like Fibers, Mongo, etc–it would level the playing field and put us on equal footing with node developers outside the meteor community. …so that’s one idea.

In a worst case scenario, I think we see GraphQL/Relay take off just as quickly or more than React. RethinkDB easily plugins in via GraphQL, and boom Facebook comes up with an isomorphic package manager and node server to connect all the dots–what then? It just seems to me that a lot of what Meteor has brought together from day one via the semi-walled-garden Apple style development approach has finally been caught up to by the community. It’s like death by a thousand paper cuts. So our options (and these are just a different way of presenting the 2 options presented above):

  1. beat em

or
2) join em

See, I really believe–and I think we all have believed–Meteor had a chance to be the platform to end all platforms, the Ultimate Web Development Platform, the Ultimate Javascript Application Platform. So sure, it could live on as an average platform. Or it could go on to truly be king. And I’ve set the bar high for Meteor. I think it can go on to be not just one of many MVC platforms that exist for PHP, for example, but like Rails be the only MVC platform worth considering for Ruby. Meteor could be that for javascript. That’s the f**ing point here. I think framed in those terms, each and everyone one of you long time meteor developers would have a hard time disagreeing. And I think MDG itself might have lost its way along the way, but I still believe they could make it happen. When Galaxy is truly done and printing them money, I recommend they do a deep rethink and reevaluation of their plans. Where they make the hard decisions to drop pursuing SQL, and a bunch of other similar nice-to-have features. I recommend they operate like a startup again working on the smallest MVP possible. And I recommend that the value proposition there be nothing other than the interface into Meteor. I recommend they make it look the way Rails would look for the modern “Connected Client.” Answer that question. And along the way crush React (or fully embrace the React World/Stack). And do things like: make their build system look more like what the node community at large uses, perhaps even offer a non-fibers async node api as an option, or at least a better interface than wrapAsync, bindEnvironment stuff; something that looks more like what the rest of the node community is doing. I think MDG has learned a lot since the beginning to formulate a server side plan that wouldn’t get as much backlash from the rest of the node community (disclosure: i personally love fibers; im just making an extreme suggestion to paint the picture for how far they should take their reevaluation). Then finalize the strategy by coming up with a nice migration process from Meteor 1.0 to 2.0.

The type of developers Meteor attracts are those that love a good interface. We are all defecting because we like the React interface. We like the interfaces of things like Webpack, Browserify, build tools like Grunt, Gulp, super shiney new useful interface like GraphQL. All this shit we see day in and day out, we want to use. It makes the interface shown on docs.meteor.com look like it has lost its luster. MDG needs to understand that. They need to understand the marketing value of their interface, the sexiness of their docs site. And ultimately the usefulness and cohesion of providing a proper framework. Now that most stuff “just works” they need to circle back and turn Meteor into a real “Framework.” That’s the bottom line. They need to make it their top priority to deal with the “Facebook React Stack” challenge/problem/competitor, and drop everything else. It’s that serious. (After Galaxy is printing them money of course in a hopefully a few more months.) I’ve used nothing but Meteor for over 3 years, but as soon as Facebook’s solution goes “full stack” it will likely be an obvious decision to jump-ship for all new projects. Facebook is moving at such break-neck speeds that it almost feels that that time is inevitable, that it’s no more than a year away. Overnight React Native seems to be full stable across iOS and Android. GraphQL and Relay popped up out nowhere. Facebook is not far from the bottom of the stack already. It’s only a matter of time. And from there, of course they will wrap it up into a nifty facebook-sponsored full stack isomorphic solution. And instead of Meteor, they will call it “Rocket” or something lol. Meanwhile Meteor will be exploding hear on earth, while Rocket is launching your projects into the stratosphere lol. This may sound like Fear Mongering, but I think we and MDG needs a healthy dose of it to see the reality. Something is-uh-cookin’ in the Facebook React world, and doesn’t start and end with a frontend framework–whether Facebook has planned this far themselves already or not. See what I’m saying, it will be birthed by one of their many sub-camps (i forget what they call all the “companies” inside their company). You know, all that move fast and break things developer freedom they allow for over there; the same philosophy that has lead to the birth of so many leading open source projects within their company walls. It seems to almost be manifest destiny that they build the full stack solution to what Meteor did first! I mean these smart people all buzzing around their offices. They pass each other in the hallways and say: “oh, wow, now that you built GraphQL, I got an idea, I’ll build Relay, to really coordinate things nicely between GraphQL and React.” You think in that same conversation someone isn’t saying:

-“we really need to address the server side?”
-“why don’t we build a database of own?”
-“Hey Mark, we really need a 50 person team building a RethinkDB competitor or you gotta buy RethinkDB itself?”

…etc etc. If you think these conversations aren’t happening you’re kidding yourselves. That’s why one option is Meteor could step to Facebook and be like “we wanna fill in all these gaps [from ddp down]”. Or at the very least figure out how to interoperate with GraphQL first, and maybe Facebook won’t even waste the time at that point. Or in the worst case scenario, snag an early piece of what is likely to be another bustling ecosystem.

That’s how MDG needs to think. Otherwise, they/we will be another niche community. And there are many of those on the net. I however have always envisioned us as more, as having way more staying power than that. Having a run several times longer than even Rails.

Final thought: if MDG doesn’t have the money/resources, they need to empower the community to do so, to contribute towards this vision (or whatever their “life saving” strategy ends up being). It’s very hard to contribute to meteor. I don’t know the answer to this one, but they should basically segment out some official areas for community contribution, and find a way to trust us to reach the “high standards” they hold themselves to. And they should first lay out their true road map. That trello board is bullshit. I mean I get and like how it only has one task in the present column: Galaxy. It shows their supreme focus. But everything after Galaxy is a hodge-podge with no official declaration of what they will do and what’s important to them. MDG should publicly display a running proposal of what they plan to tackle post Galaxy. How are they gonna operate? How do they envision the future? Do they see how grave the threads I’m mentioning today are? What do they plan to do about it? They don’t need to set a plan in stone, but delineate different options and ideas for how they’d tackle the different options like I have done here today. What will their focus be?

8 Likes

@faceyspacey Do you really think, someone reads this walls of text?

10 Likes

hey, the whole thread is one of the biggest walls this forum’s seen. because it’s covering some big and important ideas. so does my post. it’s up to you whether you read it or not.

7 Likes

yes people do

It’s interesting but this topic is worthless without serious input from mdg. All can talk about this like you want but it won’t change a thing. Only thing which can be done is to quit Meteor if there is no satisfying communication from mdg.

2 Likes

And go where exactly? Switch to React with a less pleasant backend like Firebase?

I disagree about those concerns that revolve around limited resources.

MDG was initially three guys changing the world, smart enough to create this beast. @mitar is a lonesome cowboy smart enough to bake a component system into blaze in the small time he’s got among many other things.

Facebook may have a bunker full of engineers working on react, but that’s just irrelevant for me.

It’s like, it takes a month to cross the ocean with a boat, so it must take a week to cross the same ocean with four boats, right?

I think MDG is outright concerned about monetizing on the millions of dollars invested in the company because they now have something to lose, which they did not have in the beginning. But guess what, they have still got the same most important asset, their talent!

I think they need to reassure themselves that they don’t need to jump on any bandwagon just because it is better at anything. They should just feel in their guts that what they have done is quite good and they are more than enough to make that even better.

I’d prefer @dgreensp’s next self-confident, betting-on-the-future, novel idea around blaze than any hundred facebook engineers would suggest. After all, facebook should have more corporate concerns than for simple innovation.

11 Likes

And go where exactly? Switch to React with a less pleasant backend like Firebase?

That’s not the point here, the issue for the users who invest projects in Meteor is that they have no other power than to quit. That happens when there is no communication. You think just technical but that’s not my point.