[Poll] Meteor Prototyping Edition

Yea after thinking about this for a while I totally agree. It’s not much harder to learn React instead of Blaze. Once you take beginners out of the equation you’re left with just prototyping and throw-away prototypes at that.

I do think that having a prototype system would be a great value for getting business information for certain companies but there isn’t a great enough need to make an official edition. Making a boilerplate with a Yo generator would take you far enough.

At any rate i’ve changed my mind and have decided that I think overall this wouldn’t be a net positive. I really appreciate all of the comments from both sides, gotta love community feedback :smile:

3 Likes

Meteor is evolving and more concerned with building scalable, HA applications than for purposes of prototyping. So we’re outgrowing technologies like Blaze, and preferring React, based on concerns such as performance. At some point, Meteor will outgrow the current build processes and support code splitting (maybe via Webpack, who knows). As applications get more advanced, they inherently need more structure. You often don’t need that much structure when prototyping. What would be most elegant solution would be to keep simple API’s (like Blaze) that offered comparable performance to React, so you can forego the added complexity of such technology. That would be a huge value-add to the Meteor developer experience.

All of that said, fragmenting the community may not be the best way to go. All in all, if you want to keep using Blaze, you can.

1 Like

I voted “no”.

I don’t want to hear one day “what, you want our brand new RethinkDB implementation to work with Blaze? Screw you, Blaze is only for prototyping”. Because what’s the exact reason that implementation wouldn’t be made frontend agnostic? What makes React a better fit for RethinkDB or MySQL?

Also I assume the division to Prototype Edition and Full Edition would mean the end of Blaze 2 project, am I right?

1 Like

Thanks for putting this out there @SkinnyGeek1010. This kind of discussions and testing all options are always important when there is a big transition involved. I think despite the inevitable short term pain, it is probably going to be good long term, for the whole eco system.

I will go as far as, if you want to adopt React, adopt it fully, including its conceptual philosophy and not put templates in React.

Also, GraphQL is a big opportunity for the whole Eco-System. If Meteor can be the provider of the transport layer using its Pub-Sub patterns, and create some best practices around it, then it becomes easy to create robust apps and scale up. Imagine having one code base in many device types using standard GraphQL protocol that is being adopted by the whole Javascript community and leverage the tools that are built around the protocol.

Now, having having said that it is going to be interesting to see what would Meteor going to be after all this changes is some thing we have to see.

2 Likes

RethinkDB works great with Blaze too… currently you need to use minimongo to get the data out but that’s ok too (unless you use the experimental Rethink package).

The reason Blaze was under ‘prototyping’ is because I feel it’s the fastest way to build out a UI. I’ve tried and tried to get Blaze to scale (as in team/codebase size) and have struggled with it (as has Arunoda which is why he has released so many Blaze experiments).

I don’t think React is a silver bullet, it just seems to be what Meteor is moving too (honestly I think Elm or Om is a better ‘technical choice’ but the big picture it isn’t a good tradeoff).

I think what is confusing with all of the upcoming changes is that 1.3 doesn’t seem like a minor bump but a major version release that could contain breaking changes.

I think Meteor should convert to SemVer and release all of the new changes on 2.0.0. This way the 1.x branch can still be maintained (if desired), 1.x is already fairly stable, people can choose which major version to use, and it will lay the future framework for new releases (3.x, etc) to keep up with future updates. Modules can choose which version to build for, and there wouldn’t be a separation in the Meteor world of where Meteor is going. Meteor should contain breaking changes, that’s the only way to advance the ecosystem.

Just my 2c.

3 Likes

Similar thoughts here.

However until the data flow and patterns with react are properly tested and easy to follow, then react in meteor is not yet a better solution than blaze for the beginner, nor for prototype/minimal viable product projects, as it will just create other problems and possess too much uncertainty and lack of reliability and predictability. Some key elements of the meteor react stack and patterns are still to be vetted out. But eventually it can be, given sufficient work.

In either case, it is not something that can be flipped right now or over night.

maintaining blaze for now, I imagine, is not much different from maintaining react and angular 1 and 2, but maybe urigo and dgreensp? can tell more about that.

as long as maintaining support for blaze, does not limit innovation and possibilities with babel, npm, es2015+, react, redux, webpack, hmr, code splitting, loaders, routing, etc, and anything else we need and want, then by all means.

Eventually when the documentation, patterns, guides, etc is up to par and things have been refined, then react can be just as good for prototyping and MVPs if not better, and with blaze compatibility as a layer on top, mdg need not maintain multiple tracks, it all comes down to add-ons.

But until then, and the tracks can merge or one becomes obsolete it does look like it is necessary to cater to each independently, in one way or another, and using packages for customising flavours should be sufficient, for clinical meteor and other vertical solutions as well, assuming the underlying core is flexible enough.

Ps.
I’m already on the webpack+react+redux etc innovation track, so the blaze support concerns is just to show respect to others, and lets be fair, onboarding new people may as well be via react soon when ready for that, so that’s not really an issue, the real concern should be for those with existing investments in blaze developments and deployments that need some return on their investment, and a little tlc and lts.

1 Like

This would be a waste of MDG’s time. But it would be a great community project. fork meteor or pin it to a specific version and pick a set of well defined packages that work well for rapid prototyping.

3 Likes

I think we could focus on a code generator (maybe with an IDE) without any modifications to meteor core. When core changes we just change the output of the code generator to reflect best practices.

In fact, this already exists but could be expanded upon: http://www.meteorkitchen.com/

2 Likes

After reading most of the discussion in the thread, I think the best way to achieve this would be a Meteor Prototype Edition package pack and guide website. Basically it should let you copy-paste your way to success.

You could pick a standard for everything - basically you could say bootstrap is the best CSS framework, have that tie into a bunch of pre-made bootstrap/Blaze components for all kinds of junk, etc.

6 Likes

I suspect that once the Meteor Guide is fully implemented, the desire for an official Prototype Edition will largely evaporate, because it will be so simple to role your own. For example, here’s the “Prototype Edition” I developed for my students:

Philip

2 Likes

You are putting too much stuff in one plate.

Some changes are good and should get in sooner than later. Others are a matter of taste.

An old saying in my country says that “to make happy everybody, you end up to make everyone unhappy”. That is exactly what it feels like. I think Meteor sometimes suffered of chasing the fads more than solving the biggies. There is too much relativism in the Javascript world today. Too many options and too many choices most of them with their pros and (do not forget) cons.
For example supporting Blaze, React and Angular is going to be quite a challenge. If you want to build packages you have to do it in the Angular way, the React way or the Blaze way… how much time is going to be wasted by the community to rewrite the plugin X that was originally written in Blaze for React or maybe for Angular… Now I also have to think “Which one is going to be the one that stick?” And try to do a good bet so I do not have to redo everything later when some options are abandon…

At different times I used Blaze, React and Angular. My favorite is … It does not matter. But this relativism “Meteor is just a collection of packages, choose your favorite flavors” leads to confusion and waste ton of community time in rewriting, refactoring, dealing with each different edge case of the permutations of the plugins…
Part of Ruby On Rails’ success came from making things opinionated and simple. When I used Backbone, I used to find 3-4 ways to solve a problem and wasting time to find out why different people used those different solutions.

I think that sooner than later it is better to make bold decisions and stick with them. Evolve them but unless something it is clearly 4x or more better, do not disrupt the past. I think that sooner than later it is better to make bold decisions and stick with them. Evolve them but unless something it is clearly 4x or more better, do not disrupt the past. And frankly in this matter, waiting a little is a good strategy. Time wipes fads and make good choices to stick around.

As an entrepreneur I want to spend time building my product, not chasing the latest changes and waste 50%+ on my time on refactoring code that is already good and work just because I want to run on v1.3 best practices instead than v1.2… because it is going to be pretty much the same story with for v1.5, v1.6, etc.

3 Likes

I agree, since i know Blaze is a gonner, i have been overthinking options and my projects are stalled.

1 Like

@vjau hmm… no need to stall your projects.

  1. keep developing/maintain your current blaze projects, until you have an alternative viable for a switch
  2. startup 2 more branches
  • a - react + blaze, via react-template-helper so you can replace your blaze templates with react components from the bottom up, and get a feeling with react as an alternative
  • b - react pure, without the mix, so you can get a feeling for react in a more pure environment, consider adding redux, router and webpack when your confidence level increases

the thing is that your projects are normally much more than purely a technical matter, and much of the work you do has blaze or react as only a fraction of the bigger picture. eventually you can move your user base and UX design and experiences over on top of a more efficient technical foundation as you evolve.

currently for blaze there is no solution in sight for code splitting and other performance and scalability related challenges, so while it works now, then eventually if you are succeeding you’d be looking to enhance your initial technical solution anyways.

for both blaze and react, with meteor and the live query nature of using oplog, mongo, stateful websockets, etc, there will be a problem with both vertical and horizontal scaling. while meteor made real time data relatively easy it made it easy by sacrificing scalability, a problem not solved, so it seems, although it can be pushed for a while higher hosting cost. in short: an efficient scalable design is missing.

so… for now - if you want…, carry on, and spend on r and d for your future. it is necessary. there are no magic, just things people don’t understand. when they get under the hood, it becomes science. and you realise you have to do the work.

1 Like

I have two main projects, one old and big (++), and one more recent and less advanced.
For the big one, i have no intention to rewrite it in React, it’s too big. I have started to do a mobile version, i considered React Native but it needs a “traditionnal” backend, for which Meteor is not really useful atm. I have considered to write a JS frontend with meteor and react, but 1.3 beta is not really usable atm, and i can’t stand writing in 1.2 with everything global.
For my smaller project, i have started rewriting everything in React with Webpack since this summer. But “getmeteordata” feels awkward, and i’m not sure it won’t be a gonner too. So i have started considering other options like redux, but i stlll don’t understand how it plays with databse. I have considered Graphql too, but it seems not mature enough.
I’m a bit lost, before the meteor/react “fiasco” i was very productive, now i have lost confidence, and i’m looking for an exit plan.

one possible exit plan is to make your frontend in react components, which lets you more easily switch between frameworks as it has more support than blaze, it also works well with webpack so that’s another concern covered.

also check out yeoman.io , actually back in 2012, while evaluating different nodejs frameworks and integration stacks, after having run with node, node+connect, node+connect+express, node+connect+express+railwaysjs/compound I was looking around and while finding derbyjs’s documentation and organisation too messy, and yeoman without clear end to end scope, meteor seemed like the more stable bet.

some concerns, such as SSR and incremental loading never had a solution in sight, although @dgreensp @avital once started lining up a 3 point road map for it after the spark to blaze move, but it never came through all the way. I wonder what happend to the plan and them? dgreensp did solid work and suddenly no news for quite a while. now webpack+babel+react can deliver that, and redux can provide for a more predictable flow, but the data patterns and scalabilty still seem to be a place of uncertainty.

donejs, and maybe there are similar projects, what are angular folks using as their defacto build, dev and backend system? may also be of interest.

getmeteordata is a mixin and like the entire data layer with meteor, it raises some concerns so it needs time to settle and find its nature, instead of mixins higher order components seem to be the deal, but again we need to use getmeteordata ? so, go for something that works for now, establish the certainties possible and accept the uncertainties needed. maturity is also a matter of establishing predictability for which redux is a key. expect some work to be done on the data integration later, it raises too many questions.

for react, don’t start with anything less than 1.3-modules-beta.2, and roll your react packages and modules from npm only. with 1.3, thereactivestack/meteor-webpack will also be much better integrated, both using node_modules and package.json and global’s can be a thing of the past. (but I guess you are comfortable with this already since you wrote you’ve done react + webpack since summer)

you may or may not get your blaze apps rejuvenated when/if blazereact and or blazecomponents work on top of react in a way that it integrates seamlessly with the underlying react foundation, and thus can benefit from the webpack+babel HMR, codesplitting, and such. same for a possible relief for the data backend and oplog livequery scaling issues.

1 Like

Is Blaze really dead? I hope not. I must have been out of the loop. I made two projects with React after a lot of time spent figuring it out. And it seems that React just takes much more time to write and the results are almost the same. I’m going back to Blaze for future projects.

1 Like

Amen. Except I didn’t know Blaze was already declared a “goner”. I hope not. I’ve already lost a lot of time and $$ because of this split.

You’re joking, right? You actually took the time fully learn React (React and what, Tracker?) and built two projects with it, and you’re not satisfied with the effort it took or the results?

Will you elaborate on your experiences please? For example, what do you mean by the results are almost the same? How/Why does React take more time?

One of the main benefits of React is maintainability. This won’t really show until your app gets more feature requests and different changes. Debugging is a close second… the debugging tools available for React are nicer.

That being said, if the time to write is important than Blaze would be a great fit.