What should we build?
https://plus.google.com/115485431256936261338/posts/C5DFPnHk9mk
A lot of us are becoming alarmed at the quality of posts, projects and resources popping up in the AngularJS community. The bottom line is the core team is too swamped to push 'Best Practices' or moderate anymore, and there is no officially documented best practices. It would be nice if there was a way to ensure / improve the quality of posts and projects that arise in the community through a centralized system.
Ideas that have been discussed:
- An official blog
- An official newsletter / internet magazine
- Pro reviewed-quality control
- A directory
- A voting and feedback system (StackOverflow-esque)
- A submission-for-review service
- Democratically run project (no 'you write for me' or 'i write for you' ownership)
Mix and match. We wouldn't want to discourage bloggers, and we know some of the best devs don't have the time to go to each blog and provide feedback (or blog themself).
CakePHP has the 'Bakery' service (although it lacks voting)
I personally have been actively working to provide a 'Best Practices' repository in the AngularJS wiki (instead of blogging) and the new book by @pkozlowski-opensource and @petebacondarwin is probably the closest thing we have now.
- I think the best idea would be a combination of blog posts turned "lessons".
- Blog has this great feature of "reminding" people there is a new content, while sites like John Lindquist vids offer a benefit of starting where you please.
- It must be kept up to date, because Angular is evolving so fast many examples out there are outdated.
- Voting is a great idea too, but I think it will push some of the material outside of reach. p.s. Democracy doesn't work - there a dictator needed.
- I think it might be a good idea to set an Angular "Best practices" badge bloggers could use (they should opt in and have their code reviewed) this way they could be maintained because it would be the bloggers who'd want to participate, not you chasing them to write good code :)
@maciejjankowski keep in mind a few things:
- Lots of blogs, tutorials and feeds already exist
- They are labeled as 'tips' or 'best practice' but contain many bad practices
- They are privately run
- This discourages others to join their project, so they start their own instead
- If the owners become busy, the resource becomes outdated
- There is no review process for their posts
- AngularUI is entirely democratic. I serve more the role of coordinator. UI-Router is an excellent example of just such endeavor
- StackOverflow and StackExchange are considered good resources and give voting to the community
- Egghead could add an RSS if he wanted. It's also completely run by 1 person.
- Solutions such as the G+ page, Brad's postings, twitter, and other crap is just a collection of 'whoever decides to spam this week' instead of a directory with best content pushed to the top
- People may not want to be forced into writing on our platform as they may want to keep their own blogs/whatever
Honestly, there's something to be said about ngmodules.org (in fact @jimrhoskins was added to UI when we started discussing this same exact thing almost a year ago) but it's broken, in disuse, and only covers repos.
I'm thinking that it would be best to have a directory cover these primary items:
- Blog Posts
- Repos (projects)
- Resources (all the rest?)
I was thinking it would be nice to have voting & pros/cons in bulleted format, so people can +1 a bullet. This way feedback is constructive (instead of comments like "it sucks") and authors can improve their work and have ratings adjusted accordingly. This was one idea anyway.
Example might be:
Resource: mean.io Votes: +23 / -3 Pros:
- Covers full stack integration +4
- Boilerplates with good tools (ui-bootstrap)
Cons:
- Improper module structure
- Long introduction tutorial (use this resource instead)
Related:
- angular-seed
- angular-app
- ng-boilerplate
Thanks @ProLoser for pushing this forward. One question: The example you showed above goes pretty much in a stackoverflow directino (which already has been discussed). For me, its still unclear where would be the resource itself? So there are votes, pros and cons and a "related" section (which is all very awesome). But what about the resource it itself? Is it still hosted "somewhere", so peeps are able to submit links to resources (kinda like Hacker News) or will they land in the directory?
I am not sure I follow your question. I figured that the site would be built with firebase or something and hosted on gh pages and maybe get linked to from the official website. I thought it would be cool to have an official ng Internet magazine but a lot of people are already trying to do that and may not like the idea, even if it is democratically run. Are you like suggesting that we create some code snippet people place directly onto their blog or repo (like those 3rd party commenting services)?
Or follow the bakery example and host the blog posts on this service. The difference would be we would still show posts on other blogs but unlike all other services anyone can post immediately, no "you must be illuminati" crap. Better to encourage people to write or post and then provide feedback and improve the post than to create more barriers of entry.
@ProLoser Using firebase for that would be awesome :+1: So, no I was just wondering, how submitted resources would be handled at all. So for example, how to submit a resource? Who is able to submit a resource, only "Members" or everybody? How does a submission look like? Does somebody just submit a link to a blogpost in the internet, or will the posts land in the directory somehow?
In short: would that more look like a Hacker News for Angular resources, or will the resources hosted by this whatEverItWillBecome-Site?
I thought it would be cool if we had a mix. Posts made directly to the service would get the benefit of having more gurus review and provide feedback, but linking off site would be supported too.
The only membership requirement would be that you have a Github account, but we would have moderators who are just people willing to spend the time doing cleanup.
I have found that I prefer the ask for forgiveness than permission approach in general.
In addition, I like the idea of voting resources very much! Much better then comments, although I think there should be a way to comment on resources (maybe only for voters) to have a chance to clarify, why somebody voted down or up (which is probably already covered by pros/cons).
But who will be able to vote? Everybody? Wouldn't actually make sense, since everybody could vote good things down and bad things up. So it seems that it only makes sense if "members" are able to vote. Then there's the next question, how to become a member? And also, if everybody is able to become a member, voting could be open to everyone, where we have the same problems as before.
@ProLoser A mix SGTM.
First, thanks for that "tips" and bad practices sentences, sounds for me ¬¬.
I don't think that everyone can vote. People tends to vote up everything they see. Just look to any reddit page with an angular article associated, it always have 3-4 times more positive votes even if they are not that good.
Also I think that people can blog all they want to, if they are bad, they won't get any visit. I don't feel my knowledge getting worse reading bad things, I just keep the best ideas :P
So I'm not too sure what the best approach would be at this very moment but, off the cuff:
- It should try to work alongside official Angular documentation.
I see the official documentation as a way to get deeper into one specific API, especially to just double-check what the signature of a method is (what parameters it accepts). I wish these pages would be more brief but with more concise and straight forward examples. Very in-and-out!
But for someone looking for more information or context, official documentation could then link out to tutorials from this project so people can see how it fits into a bigger picture.
- The organization of tutorials/articles should be based on what people are continually asking questions about. (Maybe people can share their Google Analytics keywords so we can compile together what some of these real questions are.)
Examples:
- How do I make a directive?
- How does scope work in a directive?
- Why shouldn't I have DOM manipulation in my controllers?
- etc, etc.
Once we have a wide set of questions to work from, I think the best approach would be to find a good base to answer this question (whether it exists already in the official documentation or as a blog article) and then "wiki-fy" it. By wiki-fy, I mean that someone does a code/readability review on it and supplies edits. As time progresses, this article can be continually improved to reflect the latest APIs and include clearer examples.
Just some initial thoughts. I've got more ideas.
Pinging @angular-ui on this thread.
@Foxandxss it wasn't directed at you, there's a LOT of solutions that share that name. Also, I don't know if 'they just up vote everything' is accurate. But most importantly, I'm not saying people shouldn't blog, I'm saying their visitors won't know better. They will usually have no idea about the mistakes in their work, and rather than having people go around to every blog post out there, it would be nice if we had a centralized feedback solution.
This could theoretically become an innovative solution for more than just AngularJS if executed properly.
@pchen I am not sure that the resource being the originator of content is the biggest priority. There is an issue of time / energy people are willing to expend to produce such material, and the bottom line is they are either more interested in having their own blog with their info, or they should push back to the docs/wiki. What you are describing is what I've already tried doing on the AngularJS Wiki.
I do think it would be an interesting point to get direct linking between articles and documentation.
Would be nice to get feedback from the @angular team
@ProLoser A general feedback solution that not only works for angular resources. I'm sure this could become a big thing. And yea having feedback from the core team would would be nice.
I like the initiative @ProLoser
I had a lot of the same motivations when building up ngmodules.org. Sadly as is often the case work and personal stuff got in the way of me being able to maintain it as much as I would have liked. It's already open sourced, but I'd happily contribute the database and domain name(s) to this project if people think it could be a good resource.
I feel like what's missing is some sort of larger scale demo application where angular's strengths and best practices could be shown. I'm thinking of some sort of twitter clone to follow Rails Tutorial's suit. I'm aware of builtwith.angularjs.com but none of the open source projects there (or at least the ones I've seen) both a.) are larger scale and b.) follow best practices. Like articles about best practices are all good and dandy but at the end of the day, it's code that matters.
Lead by example. Provide a clear standard and people will follow.
Get someone in the the core team who's job is to write articles/examples/documentation etc posting on the official Angular blog. They will be close enough to the core developers to be in the loop and get feedback before posting etc.
If you find good posts up to the 'standard', link to them from the main blog.
This person will also have time to ensure communication from the core team about key issues is clear and concise. I've been confused about when 1.2 was coming out, , I thought it was about 3 months ago. There was that big announcement and video, then it never turned up, I'm pretty sure I'm not the only one.
I concur. I think what is required is a real world application built with AngularJS. New features could be added to this application as AngularJS improves or people could send pull requests to improve how a certain feature has been implemented. I came across this very detailed AngularJS tutorial http://www.thinkster.io/AngularTutorial . I think there is a lot of value in something like this being backed by Angular officially.
I'd like to see some kind of jslint/jshint/eslint tool that I can run via grunt as I'm working and it can help me when I'm not following best practices. nglint?
Screencasts + Collaborative projects.... In my opinion what the Angular community lacks is provision of complex projects with screencasts to tutor viewers... What if we all worked together on sample apps. Not just TODOMVC... Something bigger... To show the real power of Angular directives, and all its features!
Hey all - so a lot of this is pretty much in line with what we're doing at Thinkster.io. I see a few folks in previous comments have linked to our tutorial & AngularJS curriculum, so a few of you are familiar with our format. If not, take a look at http://www.thinkster.io and poke around. Basically, we've built an awesome curriculum & tutorial that not only teaches you the concepts behind AngularJS but also how to use them in a real world application.
Within the next few weeks we're going to be opening up our author tools to a few key folks in the AngularJS community, and we've come up with some ways to only allow quality posts to be surfaced. Since we're already working on this full time and have a lot of traffic, it might make sense for this initiative to be tested on the upcoming release of our platform. We'd be more than happy to give author privileges to everyone in this group.
Thanks but I still wants to run my own blog, with or without bad practices :P
That's totally fine - we're more like Medium.com than Wordpress. The collaborative & networked nature is what we find particularly appealing in this approach, as creating exceptionally good content is always done with the help of others.
Maybe this isn't quite the right place for this, but I think this might be the perfect fit my startup, @coursefork. We're trying to build a series of "best practices" walkthroughs for common tech, like Angular. This is especially interesting to us because we're evaluating Angular, but have been having our own problems finding guidance on how to do Angular "right"...
@EricSimons maybe we can start with your [impressively well-built!] content; would you be willing to open-license the material, and maybe work together with us to figure out what a open-content Thinkster looks like?
tl;dr: open-source all the things, knowledge & education firstly.
Coursefork! I got introduced to one of your founders a few months ago but was so busy with Thinkster that I never got a time to chat lined up. Anyway, we should chat about all of this. We're pretty focused on continuing the development of Thinkster, but we haven't ruled out open sourcing the curriculum we've made.
I'm surprised that pineapple.io hasn't been mentioned:
A central hub of Tutorials, Tools and Assets for developers and designers
There's already an Angular #tag in use, too.
@martindale I don't know how I missed your launch of coursefork. I started development of codehuddle.org late last year but started a new FT job earlier this year that didn't leave much time for side projects.
Open Educational Resources has been growing in non-technical edu for a while. Nice to see it trending in tech training now too.
We could use http://codereview.stackexchange.com with a specific tag (such as ng-community-review) to vet code before posting it to a blog. Blog posts could then link to the question on codereview so readers can see what the angular community thinks of the code being posted. Noone has to spend any money or any time to set this up (except to create the tag), there is no bottleneck in that no single person (or group) is responsible for vetting code, someone motivated enough could probably create a widget that bloggers could add to their site using Stack Exchange's API (http://api.stackexchange.com/docs).
We could start with my submission for a codereview: http://codereview.stackexchange.com/questions/30543/my-first-oss-software-angularjs-drag-drop-please-review-code-and-documentation