New MDG project: The Meteor Guide

@sashko I made some comments about the performance monitoring chapter. (or lessons)
What do you think?

I can work on these.

Great stuff.

A random comment. Maybe it would be useful for you to read relevant chapters from the following two books:

As it seems you are trying to organize open source community there are some amazing resources available, experiences and insights. I am not sure if you have consulted such and similar resources, so I am sharing them here. I found them interesting to read, things often look obvious afterwards, but sometimes there are good ideas to prepare in advance.

3 Likes

Thanks for posting! Iā€™ll check those out ASAP.

Great news! Itā€™s something really necessary. I need to get a better understanding of how to make things right the first time in a Meteor app. During these months I went through massive refactoring of my projectā€™s modules more than once. In many cases I thought I fully grasped how Meteorā€™s components work together, but every time I had to go back to google keep looking for new answers.

IMHO Meteor can be really helpful for small projects, but it can become challenging to use if things get more complex. A guide with patterns and best practices from the community, driven by MDG is what we need.
Happy to help.

2 Likes

Great job @sashko. Looks spot on!

From my point of view there is so much stuff mentioned there that I have no idea what it is even about. Which is a good thing. Hopefully this will also be suitable for beginners to give introductions to those topics rather than just giving an overview from the perspective of developers who already dealt with similar concepts! Thanks :slight_smile:

I feel like there is a wide variety of information already on the internet for absolute beginners - tutorials, example apps, etc - and most of what Iā€™ve heard is that there arenā€™t any good intermediate-level resources.

So this isnā€™t about building your first or second app, and itā€™s not a resource for super hackers; itā€™s for someone who has messed around with Meteor for a few days and wants to learn how to do things ā€œrightā€.

Although weā€™ll still try to make the content as approachable as possible, and organize so that you get started reading the introductory bits without much knowledge.

9 Likes

Iā€™d start off by asking @arunoda if heā€™d be willing to sign off his rights to bulletproof meteor and meteor explained literature over to MDG in a deal possibly including a sponsored by kadira link.

That would be a great kickstart to an awesome meteor library.

Also, a curated import from meteorpedia and @awatson1978ā€™s cookbook along with some articles from prominent meteor bloggers getting 301-moved over here and we get a perfect picture of what we already have and what else we need.

2 Likes

Fragmentation (Android, anyone?) is a two-edged sword. Personally, I prefer sticking with the canonical, or in-the-box, approaches wherever possible (Blaze, MongoDB, etc.) To each his or her own, of course.

1 Like

One of the most important things we need for a good guide that ā€œfeels rightā€ is a consistent vision and style. That probably means rewriting and adapting a lot of the content, but it sure is a great starting point. And I think it would make a ton of sense to link to other resources especially if we drew from them in the creation process.

1 Like

These are going to be extremely valuable resources while we are building this thing, and we should definitely link back where itā€™s appropriate.

I think this is going to be the biggest thing for the new effort - I think weā€™ll need a large amount of editorial effort to make something that people can really agree and build on.

Challenges

Thatā€™s probably one of the biggest benefits an official guide can bring to the table. My hope is to create a company culture here at Meteor and for contributions in general that if you havenā€™t updated the guide for it, itā€™s not done.

I think we are working on this - and it would be great if the guide contained some tasteful diagrams to explain core concepts and mental models.

My plan currently is to model it exactly after the prior art: Rails guides, Django, Laravel, etc. Letā€™s start with catching up to the state of the art, and we can think about how to surpass it later.

Iā€™m not sure anyone really really follows ā€œMVCā€ in the strictest sense, and Iā€™m not sure itā€™s even a good idea. An app isnā€™t a video driver, nor is it a code snippet from The Art of Computer Programming. I think the React community has shown that there is still a lot to learn in the space of application architecture. While we shouldnā€™t adopt trendy stuff wholesale, it does make sense to take a look at the new tools we have available and think about how they can be best used to result in maintainable, testable, and reusable code. Perhaps the boundaries arenā€™t where we think they are.

7 Likes

Iā€™ve put in some seeds to get the discussion started on some important topics, leading up to producing the first finished guide articles:

Iā€™ve tagged a few relevant community members directly, anyone else also feel free to chime in!

Hey @sashko, many people often come to me when they have some CPU/load issues and turns out that most of the time is about publishing to much, doing sync stuff on publication or using observeChanges on big collections.
I think it would be nice to have a topic on this :slight_smile:

6 Likes

Yeah I think thatā€™s vaguely mentioned here: https://github.com/meteor/guide/blob/gh-pages/outlines.md#meteor-production-guide-deployment-monitoring-and-analytics

If there is some particular advice you think should go in there, please open an issue on the guide repository and we can discuss there!

This is fabulous! I had stepped back from doing work on my Meteor app due to other life intrusions, but have continued to follow developments. With all the changes since 1.0, this has me excited again to dive back in and develop a new app that Iā€™ve been thinking about and Iā€™m not brand new to Meteor, the Guide looks like a great idea. I love the approach youā€™re taking in both the charter and the outlines. Thanks loads!

4 Likes

I think each guide page/topic should have an open list of suggested technologies where anyone can submit a link to their package. And then community can upvote those submitted links. And once a link gets to the top, it gets covered in a guide.

I have the issue that this guide might create an echo chamber which would hide new players on the street. So it would be great for them to be able to submit the package and then early adopters could try them, vote for them, and motivate others to try them as well and so on.

So without a clear way how to deal with changing ecosystem guide will soon be full of old dinosaurs and maybe even not maintained one. (This for example happened to Discover Meteor in some aspects.) And then new people think Meteor has some shortcoming just because they are using a year old unmaintaned package (which was very popular at the time).

2 Likes

I think thatā€™s kind of the point. Keep in mind that this resource is squarely for people who donā€™t want to play with the newest technology and put together their own stack from the freshest new packages. People who are into that sort of thing will always be seeking out new stuff, and they will be the early adopters that can tell if something good is coming on.

But even so the plan should include having a set of links as part of each article to other options for doing similar stuff. For example, the Router page will hopefully also have a link at the end reminding people the Iron Router is out there as a second option, in addition to React Router and Angularā€™s UI router.

Letā€™s cross this bridge when we get there. If something starts feeling outdated in a few months, Iā€™d expect people will open an issue on the repository and we can talk about it. If it turns out we need a process for this, we should figure one out when itā€™s clear what the issues are rather than trying to hit the target from a mile away.

In the meantime, letā€™s not forget about the benefits of relative stability - I wonder if there can be an effect where the maintainers of packages that are being officially recommended are more motivated to keep their packages fresh.

I was referring exactly to that. I know how to code an app with meteor. I just donā€™t know what I could be doing better. From a ā€œnon-coderā€™sā€ point of view of coding (designer who gets as much done as necessary) those best practices and common paradigms would be nice to see reflected in the guide to learn more about those things.

1 Like

Reading through the repo: THIS IS THE SUCH AN AWESOME PROJECT! Great idea @sashko!

Those values seem to be quite different when you say things like:

Itā€™s been some years since I read his books, but I canā€™t remember Donald saying anything about how a video driver is related to an architectural pattern like MVC, or anything about any of these 2. Would have been quite visionary of him.

1 Like