These resources will be used by JavaScript developers of all levels to learn the language itself, the best programming practices and the essential libraries, frameworks and tools that are part of the modern JS scene.
One of the reasons for this program is to make these materials available for use by housing-first job training programs for the homeless, but there's no reason not to use them by anyone interested.
Please read Fighting Poverty with Code and The Cure for Homelessness to learn how this project got started.
Keep the content in learning order, wherever feasible. If a certain section can comprise a learning track, it should be the most logical track possible.
We're looking for only the best of the best material. We're not trying to collect every free resource available in the world. That's Google's job. Our job is to help the learners navigate JavaScript landscape and figure out the best, most effective tracks. This collection of links should make it easier for them, not harder. So please, don't try to add your latest blog post unless you really are one of the world-leading experts in your field.
If you think one of the existing resources could be replaced with something better, but you're not sure what that is yet, please nominate it for replacement. Copy and paste the item that needs replacing in the issue body.
Ask yourself:
- "Would an industry expert submit this?"
- "Is this topic covered better by one of the other resources listed with the same hashtag?"
Remember, we're trying to create a cohesive curriculum. If there's already a better resource that teaches the same topic, that knowledge is already covered, so there's no need for you to submit something else.
But if you know that what you're submitting is a better resource, please contribute! We'll always welcome a better resource.
The "other people's content" guidelines still apply, along with:
- Do you teach at a highly respected school known to produce the world's best talent?
- Do you get invited to speak at major industry conferences a lot?
- Have you been published by one of the top industry publishers?
- Does your blog attract 100,000+ unique pageviews?
- Do you have more than 10k social media followers, and share primarily related content?
If you answered yes to at least three questions, go ahead and submit content that you produced.
Open an issue and ask for an expert to review your contribution. Make sure the text, [Please review]
appears in the title.
We're primarily interested in a few types of content. You'll tell us what kind of content you're contributing by adding a hashtag at the end — like Twitter or Facebook.
- Video Shorter is better. 5-15 minutes works best. #video
- Book. Only add books that are available for free online. #book
- Article. Blog post? Book excerpt? Paper? The hashtag you want is #article
- Tutorial. A tutorial is a mix of text content and instructions for the reader to follow. #tutorial
- Example. A demo or example implementation of something. #example
- Exercises. Just like tutuorials, but exercises tell the student when something is wrong and let them try to fix it. e.g. learnrx #exercises
- Project. A resource that describes a project for a student and lets the student complete it. #project
- Game. A game designed to teach the student how to do something. #game
- Infographic. A graphical visualization of information, somtimes connecting several data sets to reveal a larger picture. #infographic
- Community. An online place for students to meet other people interested in the topic so they can learn from each other. #community
- News. A resource that lets the student track current developments about the topic. #news
- Collection. An expert-curated collection of resources for a particular topic (like this one!). #collection
- Course. A full course curriculum, typically put together for an educational organization such as a university, or online school. #course
- Tool. A code editor, a builder, a linter, a debug suite and so on. #tool
- Library. Or framework. Something like Underscore, jQuery or React. #library
It's possible for a link to belong to multiple types of content. But please keep types to a minimum. You don't have to add an #article tag to a #tutorial. Simply use the most specific type applicable and leave multiple type tags for dire cases like this:
Eloquent Javascript by Martin Haverbeke #book #excercises
#beginner, #intermediate or #advanced
While some hashtags are reserved for level or type of content, you can (and probably should) add a few more meaningful tags to make it easier for visitors to filter our collection. Your tags may denote platforms like #node or #react, domains like #frontend or #backend, concerns like #testing or #building etc.
Multy-word tags should be delimited by underscores, like #javascript_environments or #hackable_hardware.
- Why JavaScript? by Eric Elliott #video
- JavaScript for Cats by Max Ogden #tutorial #vanilla #beginner
- Eloquent JavaScript by Marijn Haverbeke #book
- Babel Transpile ES6, ES7 to ES5. #tool #ES6 #ES2015
- CoffeeScript The very concise language that compiles to JS. #tool #language
- Emscripten Frequently used for C/C++ JavaScript ports. #tool #language #C
- [ES6 tools] Addy Osmani’s ES6 Tools list #tool #collection #ES6 #ES2015