Angular, React, and Blaze

All in all, it’s a tough situation. When Meteor came out and for years after, there was nothing that could compete. The real truth is that it’s still true to this day, but that day is soon coming to an end. Nothing in plain Javascript currently offers full stack reactivity. Firebase is closed source and far from a complete solution. RethinkDB is just the database and requires you to manually hook it up to a webserver as @mattkrick has done with Meatier . GraphQL and Relay is slated to have subscriptions, but doesn’t yet. When that day comes, MDG will have to cook something MAJOR up if it wants to stay competitive. Otherwise, there’s no way people like myself can recommend Meteor anymore for top tier apps–not when NPM allows you to customize even more, which top tier professional apps will always eventually need.

It’s a tough one. It’s why ClojureScript is looking more and more like the answer to me. If everything is going functional, I rather just program in a functional language to begin with. If it’s geared towards being full stack from the start in combination with Clojure on the server (which is the same language, plus a few lesser-used features), perfect. If it’s reactive by default and even has a database built for such subscription-based usage, I mean I don’t even know what to say about that–that’s a dangerous combination. If it’s combining the best of React, Redux, Relay, GraphQL already, from the ground up with no legacy APIs to support, hmm. The only downside is I have to learn a new language and new programming paradigm? And for many that’s probably not even a downside, not when it’s upping your programming skills to such a degree. I personally have enjoyed it, and it’s been exactly what I need at this point in my career where I haven’t focused on a new language in some years. So you do the Math–Meteor absolutely positively must come up with something groundbreaking/world-changing again if it wants to not get lost in the sea of options that will be competitive by this time next year.

I love Meteor, and owe a lot to Meteor, which is why I’ve taken the time to voice a lot of this. I’d like to see Meteor have what appears to be the never-ending lifespan that something like Linux has. Meteor may have the opportunity to be the operating system of the “connected client.” If it want’s to achieve that level of permanence, something else will need to be dreamt up. But right now, Meteor is risked being dethroned over night. I guess what I’m saying is: Meteor can’t even win if it does a perfect job at copy-catting the latest and greatest (and whether they can do that is far from a known at this point in time); it needs to come up with something as groundbreaking as Relay + GraphQL. The question really is: is Meteor a “one trick pony” [full stack reactivity] like Google has always been criticized for search, or does MDG have something new and equally (if not more so) magnificent to bestow on the world of web development?? And most importantly, what is that, what would really make Meteor the OS of the connected client?


ps. this is the first time I, myself, have thought of these questions framed this way–but what quickly came to mind is: being the brain of all possible clients (browsers, phones, desktop apps). So, a way to really feel like you’re at the center of a codebase serving all potential clients. Really nailing that in a super consistent idiomatic way would be big. It really looks like–once Relay/GraphQL has support for subscriptions–everything else is nailed. I’m less of a fanatic about MySQL support than many, but I guess if it could show it offers support for at least 2 databases, then Meteor will really come off as a sort of operating system that lets you plugin in whatever software you want into it. It seems the GraphQL abstraction layer will go a long way to promoting the development of support for other databases. It will push a lot of common problems into code that can be shared between multiple DBs, and in doing so pave the way for plugging in more DBs. Nail integration of Reactive Native and Electron on the top of the stack all from a single folder in your file system that you can run commands on all utilizing shared code, then you have a recipe for success.

I guess that’s nothing new, and likely the realization MDG had when they brought in Cordova support. But it still needs something to feel more like an “operating system.” A command-line only operating system like Linux maybe worked 25 years ago, but in 2016 we need a GUI. One you can access whenever you are working on your app in the browser, similar to Dr Mongo and @msavin 's Meteor Toys. You open up the panel and you can see big buttons for each device you support, you can click each and you can examine static stats for each codebase. I say “static” because there would be plugins for things like @arunoda’s Kadira to display aggregate/statistical runtime stats within the platform. That way MDG wouldn’t be responsible for building all of it.

Anyway, one can pontificate forever. Clearly MDG is moving in this direction and execution just takes a while. I guess I’m just saying, marketing is an important aspect, even if all the sub-pieces of the puzzle aren’t ready yet. And to achieve that use a web-based GUI to give the feel of a real operating system, not just run time stats in galaxy of your server, or what kadira does, but something you can use in development before you even launch your app that gives the feeling that all the clients you support are orbiting around your Meteor server, that you’re achieving the closest thing possible to the “holy grail” of write-once-run-everywhere. I think at this point in time–especially thanks to React Native–we’ve come to understand that write-once-run-everywhere is pie in the sky. I’m very ok with what React Native has come up with–based on lots of experience at this point of the custom needs that apps of different screen size and capabilities really do have, I wouldn’t even want write-once-run-everywhere. It makes a lot of sense to put deep fine grained control across-platforms of code-reusability in the developers’ hands.

So that’s the sort of stuff this GUI could help you with–do things like product “coverage” stats of how much common shared code you have, and let you drill down into the files. Perhaps, wire up different github REPOs for different clients–that way they dont have to all live in one repo, but your meteor app can conveniently see them all is one (that perhaps is the killer feature here!). I don’t want to make an Electron app by copy/pasting generated client code into the of an Electron app. That’s an obvious one, and obviously Electron is far down any sort of Roadmap.

You get the idea: Meteor needs to really supplant itself somewhere to have the sort of permanence Linux has. The whole competition with NPM needs to 100% be eliminated asap. We have to be 100% NPM compatible (for reasons discussed elsewhere). Once we do that, we’re in a scary point in time–because then if that’s truly done right, Meteor is only a build tool, and one which will be replicated using Webpack or other (so you can run the same codebase without calling meteor from the command line). So for when that time comes that Meteor has essentially given all its value back to the NPM community, it needs to have a new Killer App, and that’s a panel of sorts as just described. Then from there, the business concept is that it segways nicely into the even better paid Galaxy panel, which takes production/runtime stats into consideration. But both should feel like a consistent experience. The latter a natural evolution of the development experience. From a marketing standpoint, that will give javascript developers something very solid to look at and latch on to and say “THIS IS METEOR. THIS IS WHAT METEOR PROVIDES ME. IT DOESNT REMOVE FROM THE GREATER NPM ECOSYSTEM. IT LETS ME MANAGE ALL [or at least %80] THE TOOLS MODERN APPLICATION DEVELOPMENT REQUIRE.”

4 Likes

@hamatek,

I personally feel your post is a bit nasty. MDG has done a great job developing Meteor and getting it out there. Remember that there are many competing frameworks (e.g. derbyjs) and yet this is the one that succeeded.

Why @arunoda added his own pieces into the cake makes sense. Meteor is open source and we each look for a way to improve things (MDG could have avoided this by accepting more PR’s into their repos, but, no one is perfect – they are working on becoming more open).

No big open source project can succeed without some sort of commercial custodian (e.g. Cordova, Linux, Drupal) there has to be money down the line. It’s an ecosystem. As far as Kadira is concerned, they exploited a missing offering as MDG was focused on the platform. All this will change as you alluded to :smile:

FOLKS! Stop complaining! Things are back on track now. You are not happy? Write code to improve things or use some other platform.

9 Likes

I am in Academia, and it sounds odd, but the most acknowledged method to prevent the loudest voice, or the person with the most prestigious CV or CS degree, is called a delphi study. Controlled feedback is particularly used to not value the loudest voice. I’d agree that a hackpad, without a moderator, can end in chaos.

Close to real-time delphi: http://www.codigital.com/
If you need a handful more alternatives: http://www.capterra.com/idea-management-software/

Edit
So I’d consider “how to collaborate in tech” a solved problem. It is a question of willingness, since there is orientation all around us. Just ask the guys from linux, to apache to node.

https://vimeo.com/63998851

13 Likes

I think this is a great decision! Even if there’s currently no more information about the future development of Blaze. I for one love Blaze and its simplicity, but see that React needs to be let in too.

Looking forward to Meteor’s 2016! I’d love for Server Side Rendering in Blaze to happen :wink:

2 Likes

You realize the vast majority of developers are only just leaving jQuery DOM manipulation to something like Backbone/Angular/Ember/React. By merely being on these forums, it puts us above most developers. And some people are yammering on about moving over to GraphQL (lol), ClojureScript (lol), Elm?! Really? I can’t see a team picking any of these technologies to build something solid because it’s entirely too new.

Suggesting something like Clojurescript is downright crazy.

I wish the people who build product would post here more often than the tinkerers. We would see a more even sided discussion. Everyone is criticizing MDG about not going HAM on newer tech that is just not proven yet.

14 Likes

I wonder if the jquery community said the same when meteor was coming around. We just came from HTML:). Meteor would be in deep trouble if the experienced developers would not care to bring their daily battle with resilience and testability back in here. Along with the ideas of what evolutionary step could be the solution.

So don’t fool yourself. There is no platform, even school, with major success that excelled by catering to the novice without providing the outlook of becoming a state of the art professional.

Oppositely, I believe that many experienced developers and product managers sometimes feel that meteor became at some point the flavour of a code school and learning ground. A fact that consistently gets one in trouble when trying to introduce meteor into a large, corporate context. Nobody wants to build a product on top of a school.

1 Like

@sergiotapia

I hear you and wholeheartedly agree … which is probably why MDG only sporadically answers these posts. They are probably saying, “Oh no, more inexperienced jokers” :smile:

Here is our story, we are converting our cross-platform digital classroom application from Adobe AIR to Meteor. We have hundreds of thousands of users globally and are working with the who’s who in the education industry. It will be an interesting test of the tech! If this flies, it will be a great showcase (and a lot of money for Galaxy).

2 Likes

@hamatek hey guys lets focus on core of this discussion rather going into MDG vs Kadira fight :slight_smile:

From the very beginning(since from very early days of Meteor), we build stuff for ourselves. We openly talk about them(I like to blog), we got contributions from community and here we are.

Mantra is just another thing like that. That’s how we are going to use Meteor with our own apps. Not to exploit MDG.

I agree with @ramez. Let’s focus on core discussion.
Enjoy with that we’ve today. Everything will change someday.

Let’s build our apps.
Let’s do experiments, then talk about them.
Create projects and send PRs.

That’s how we could make Meteor great.

24 Likes

LFMAO! That’s why it was such a pleasant surprise to discover CLJS was very closely mirroring what’s going in the React community, if not influencing it, and in addition was easy to learn and a natural progression. My prediction is 2016 is the year of CLJS, and generally the year of transpiled languages (again, with CLJS at the forefront).

Truth is both React and Om Next (ClojureScript’s version of React, which in fact renders to React) have both influenced each other. Moving to Om Next is not a far cry for React developers. It’s a very natural extension at this point.

I think your sentiment here about how “crazy” this all is really paints the picture of what’s going on:

  • A) the industry is moving at such a fast paced
  • but B) there in fact is all these obvious low hanging fruit that we are blinded from seeing because we think the hurdles to getting there are way higher than they are.

I have invested a whole bunch of time into dissecting the entire ecosystem. 2 months to be exact. Doing nothing but analyzing all these technologies. The gift I give is dont waste your time: go learn ClojureScript and use Om Next, and if you want ideas influenced from Elm, use Re-Frame. And if you wanna be extra savvy, Cycle.js is in plain javascript, so give that a once-over so you can see an even “more” FRP approach than even Elm, Re-Frame, Om Next, or React. In short, you don’t gotta expend the time analyzing the whole gamut, just go to CLJS. Within a week’s time, it will seem a lot less crazy. In fact, you will look back at yourself and say “wow, I was crazy” for thinking something so natural and easy (which sums up and does better everything you’re hearing by the functional evangelists) only took me a week to get a hold of.

We are in a position where we may end up spending more energy to hold on to the technologies of the past than if we just jump shipped to the right technology of the future. React will be in “flux” for a while. There’s a lot of different ways to build React apps–@arunoda having just launched the newest way, Mantra. I really don’t wanna end up building things the less idiomatic way when a new idiomatic way emerges in the React community. My prediction in fact is that all of Redux becomes the old idiom as soon as Relay matures. I gotta a least see what they launch at the next React conference at the end of February before being able to recommend to anyone a specific direction with React.

Releasing “flux” into the world was a very ironic thing–cuz a state of “flux” is exactly what that caused. But the reality is React will likely stabilize as Relay matures and they do more of what Om Next is already doing. So until then, there really is no full stack alternative to Meteor in javascript. All those frameworks like DoneJS aren’t reactive-first. They don’t offer full stack reactivity like Meteor does. @mattkrick demonstrated that you can get pretty far with Meatier in “bare metal” NPM. It uses RethinkDB. However, I’m not sure I wanna go that direction if Relay + GraphQL will nail “the one true way” for javascript full stack reactivity within a year.

ClojureScript + Om Next, being a smaller community/ecosystem, are by definition “the one true way” for their language, and that’s one of the main reasons I’m making a bet on it. Om Next is created by David Nolen who is an employee at Cognitect, and cognitect is the company that created ClojureScript, Clojure, and their realtime immutable Datomic database (all primarily invented by its founder Rich Hickey). So there’s gonna be a lot less fragmentation over there, at least for the foreseable future. And they are nailing all the things that the React NPM ecosystem is nailing before them! So you do the math–you got a lot of shelf life moving to clojurescript.

Lastly, it’s not as crazy as it once was. The industry is moving fast. CLJS has done a lot to make this their break out year. That’s basically what I’m saying here. It’s just not that crazy, man. Meteor’s solve-all-problems opinionatedness has kept many of us in the dark, and likely CLJS seems less crazy to those hanging out in the shade of the greater React ecosystem. I mean you could make a hugely popular e-book like Discover Meteor just on migrating from Meteor to CLJS. The parallels are uncanny. Thanks to Datomic, it’s solving a lot of problems from the ground up that Meteor has hacked together with LiveQuery and oplog. That’s the crux of it all. Where Meteor is a hack to achieve “observables all the way down,” ClojureScript et al is a true full stack reactivity first solution. In addition it all builds nicely just like meteor does from the command line. Once you learn the language, you’re gonna feel very much at home. …And did I mention it has a best-in-class live coding solution?? It’s called Figwheel.

3 Likes

The amount of tech you just blitz’d out into that post is just magnificent.

And eerily reminds me of the hype when LightTable first appeared. You had so many people foaming at the mouth that this was now The way forward. Where are those people now? Championing something else I assume. Is it called Figwheel now? (:laughing:)

In all this time spent learning tools, that ultimately give the same end result, when do we the developers build features?

2 Likes

Well, from what I understand ClojureScript was still a pain for many to configure and serve web apps from, etc, for some time. So they might have had light table 2-3 years ago and been able to live-code some pure functions with it, but you didn’t have a platform that was easy to build apps from. Figwheel is akin to Hot Module Replacement with Webpack–it’s not an IDE, it just helps changes in your favorite editor instantly show up in the browser while maintaining the state of your app.

People are putting serious muscle behind CLJS and have been for some years. There are logical reasons why it wasn’t able to catch on then. Even though they had this shiney IDE (LightTable), it doesn’t mean that the language and ecosystem was ready. At the end of the day, live coding and more specifically Bret Victor-style code observability is retardedly easy in CLJS or any functional language, since all functions are inputs and output with no side effects. In my opinion it was almost a scam that Chris Granger used that capability to such marketing effect. Reason being that A) it’s super easy and natural for a functional language and B) you couldn’t do any of that in plain javascript within Light Table, which you were made to think it could. It was a glorified console and call to eval. I don’t know where it’s at today, but I plan to investigate; will report back.

Depending on what path you take, never, at least depending on your definition of “features.” I’ve determined for myself I only wanna build development tools anymore, since you hit 2 birds with one stone: “build features” + stay on top of the most effective technologies. I don’t wanna wake up in 2016 still using Rails, realizing the same client-heavy app can be built 8x faster using Meteor.

But anyway, the point is it sucks for application developers right now. There’s no doubt about it. Well, i guess it could be however you look at it. I mean all these tools make for faster than development than how you were developing last year and the year before. But you really don’t wanna be in the position a year from now where you’re kicking yourself in the foot because you picked the shittier solution. …I mean it is what it is from my perspective: Redux is a ticking time bomb that everyone has fallen in love with that will be replaced by a Relay once Relay fully matures, having learned many tricks from Redux. The language only matters in that ClojureScript has already learned these lessons. Im taking this time to focus on mastery of the tools and the trends, rather than starting any new “apps.”

Likely, exactly what will happen is this: “the one true way” in javascript will emerge thanks to React and the Facebook stack. They will release a bunch of stuff at the end of February at their React Conference that answers a lot of our questions and solidifies Relay, or at least some combination of Relay and Redux (after all they just hired in December Dan Abramov, the creator of Redux). It will take MDG/Meteor 9-10 months from that point (i.e. January 2017) to incorporate this “one true way.” And boom, things will be back to normal. Our jobs will be in total 20 times easier than they were in 2005-2010, so the amount we can charge for the same stuff will approach zero, and we’ll be building fancier stuff than ever. Progress in development tools will shift from traditional libraries–with the view layer (React), seamless data propagation (Relay/GraphQL) and application building (Babel + Webpack) the last 3 pillars to fall–to brand new areas that make our code easier to reason about, a la Bret Victor stuff. And then we’ll start all over again with the current level of the stack marked as complete :wink:

This time it’s different. Om next is 24 month old. React is old. Meteor IS OLDER. Other communities could say the same thing you do, about meteor. The introduction of this video will cover most of the - to you new - technologies and than later, what the problem of real production web is.

Since we got over the view layer now, the focus needs to be on how meteor will anticipate to be a part of the solution of current problems. If so, it is required to take a look at tech, and other languages, that uses or transpiles down to JS. Not necessarily to directly implement them, but to pick up the paradigms.

There is a reason why parse.com decided to stick with an sdk back than, and not provide a full stack development environment. Because it is pretty damn hard. Meteor is currently on hit and miss to exactly pull that off.

2 Likes

Wow, Codigital and the other apps listed at the Capterra link look awesome.

I watched the Codigital video and it doesn’t seem social enough. I think we want something like that but where related conversations can be held and you can see the authors and where authors accumulate their own ranking, etc. It would literally be like this forum, but where our posts and threads are precise ideas to implement, and where we can easily sort and filter rankings of ideas, groups of ideas as well as the rankings of individuals.

Also, I feel like fine grained ideas by themselves may not be the most representative of an overall direction to take. Most likely a group of related ideas or even specific individuals and the point of view they come to be associated with will be more representative of overall directions.

With so many ideas floating around, it will be hard for people to cast their vote on a general direction. That should definitely be part of it, but at the same time it will likely come down to 2-3 main directions to take and the pioneers that represent them. Which is why per person ranking is important. A consortium of decision makers per group of ideas should emerge that get to make the final decision, but they have to do so publicly in a hackpad, where everyone else can only comment on edits, not make any actual edits of their own. …Don’t joke–a system/app precisely as we need may exist (or at least be configurable) and already be pre-built almost exactly as we need it.

From there, a more exclusive (yet public) debate or voting process should take place to agree on the winning strategy, perhaps MDG is solely responsible for the vote, whereas the hackpad creation involved community leaders (after all MDG as a whole is our BDFL).

I think such a process that is more like a “republic” than a true “democracy” will be important so we don’t end up with a situation where Blaze wins by default and the smaller more informed group who are following the overall direction of the ecosystem don’t go unheard. No offense to anyone, but we don’t want “Idiocracy” after all. lol

3 Likes

Thank you for the link, David Nolen actually summed up all this new tech in a way that makes sense to me.

1 Like

Great stuff – a decisive decision is always better than idling. We need forward momentum.

What intentions are there with evolving Blaze from it’s current features? More lifecycle hooks? Animation support? Declarative bindings vs imperative? Better support or should I say, cleaner API’s for passing data around templates?

These are the pains I currently feel. React’s patterns help mend these wounds, if we could bring those same patterns to Blaze and make them just as accessible or even better due to the ecosystem as a whole I’d be a very happy camper.

Thanks MDG! <3

2 Likes

I’d like to know this also because if you’re not prepared to address all of this you should stop encouraging Blaze. This doesn’t seem like a decision, it seems like sitting on the fence to please everyone to be honest. Instead of maintaining a view layer with no future why not spend your time better integrating the react ecosystem, or even angular if that’s your thing?

3 Likes

I think we should all relax, focus on building great products and remember that our users don’t care if we are using react, blaze, angular, backbone or whatever the next big thing is out there. The framework is just a tool to get the job done.

5 Likes

First of all @gschmidt, let me thank you for sharing your thoughts. Having been a CTO of a medium-size software company, I know how hard it can be to explain your strategy to your customers and community.

Having said this, I have to admit I am still a bit confused by the content of your post. I appreciate that you see the strengths Blaze has, and I agree with you that it is a vital part of the Meteor ecosystem that cannot be easily replaced by React or Angular, at least at this point of time, just because the level of integration is not as high yet. And I am also not very suprised you dropped the idea of building a mapping layer between Blaze and React, as I am convinced that this would limit the possibilities on both sides of the fence.

But I am missing a clear statement on how Blaze will be developed further (I mean: beyond telling us you dropped the Blaze-React mapper). The bottom line I got from this post ist: Well, we’d like to drop Blaze in favor of React, but unfortunately we can’t do it until the other frameworks have come to par (at least in relation to Meteor support). In principle, that’s ok for me, because I clearly see the benefits React has over Blaze, and you also got me with the strategy to focus on pushing React integration further. But still, if you want us trust in developing for Blaze until React Meteor really shines, Blaze itself would need some love.

For instance, I would have been literally dancing around my table if I just read the message: we’re building a web-pack-like code loader for Blaze, and we will continue investing more in the existing mobile / Cordova integration (instead of waiting until React Native Meteor is production-ready).

So, yes, as others already said: A kind of (reliable) “roadmap” would be nice.

3 Likes

Well we are totally rewriting Cordova hot code push for 1.3, so there’s that.

20 Likes

@gschmidt I think MDG can take good parts from Node.js Foundation to communicate with community and implement something like Technical Committee:

The Node.js project is maintained by individual Collaborators. The Technical Steering Committee (TSC) membership consists of key Collaborators who have demonstrated both technical expertise critical to the ongoing maintenance and evolution of the project and a long term commitment to driving the project and community forward.

In this TSC besides MDG core devs will be active community members. So it would be much simpler to make roadmap desicions, share ideas, communicate and build new architecture(parts) for meteor.

3 Likes