Hacker News new | past | comments | ask | show | jobs | submit login

Came here to say this.

The thing I love about Django’s documentation is the layering. From beginner tutorial through to high level overviews of the subsystems, through to detailed usage for the subsystems, through to API level docs, through to the source code - all of it is there, and all linked together well. On top of that, it’s all well written, approachable, full of notes and caveats/warnings where necessary (for the level of the documentation too).

I’ve not seen another set of documentation that provides something at each of those layers.

The warning and caveat are the best part for me. The django team understands very well the principle of least surprise, which is why old django installs still work, the ecosystem is very well intagrated and updates are not dreaded. It strikes menthat something new like react is in version 16 (and the doc sucks) while django is much older and only reaching v2, with great docs.

I work on React. We've worked really hard on our docs, so it would be helpful to know what you don't like about them so we can improve.

I don't use React much, but from a quick look at your docs now it looks like they are much better than last time I saw them, and I can't find any major points of criticism.

I like the fact that you have the separation between getting started/tutorials, main concepts, advanced concepts, and an API reference. The notes/caveats/etc seem reasonable.

It would be nice to link to the source in the API reference, and there are a lot of mentions of APIs that could be linked (pretty much any function name in a body of text could be linked I think), but apart from that these docs look great.

That said, I haven't had to use them day after day for 6 years like I have with the Django documentation!

One thing you might want to consider for the future would be switching between versions of React. Django has a version switcher at the bottom of the screen that lets you jump between versions, shows banners when reading the docs for unreleased/insecure/old versions (in case users are linked to them), and also mentions when APIs were added in recent versions in the text.


* Links to source: I use these frequently in other libraries, but I don't think this would be as useful for React, because we tend to have just a few functions each with a complicated implementation (vs programming stdlibs or other frameworks where many methods are on the order of 10-100 lines calling other public functions). Also our implementation isn't that easy to understand. I wonder if you had a particular use case in mind? * Linked method names: Good idea. * Version switcher: We've thought about this and will probably add it at some point.

Not wanting to open a can of worms, and I haven't read any of the React source, but if the source isn't that useful I'd suggest the answer might be to make the code easier to understand. Developers often need to dive into the code they are using for more detailed analysis of undocumented edge cases, tracking down bugs in their own code, etc, and having an understandable framework or library is fairly critical for that.

Django does a lot of complex/clever stuff under the hood, but the source is still readable, and in most cases fairly easy to understand.

This is just my 2 cents though.

Yes, making the source easy to understand is definitely valuable (even if only for our own team's understanding).

I believe Django's "functionality/(API surface)" quotient is still much lower than React's, which means it's easier to make the source useful to a newcomer.

Making complicated things easy to understand is much more simple in python than in js though.

I like your answer.

You should start with a very long, nicely sliced in small chunks, tutorial begining with script tags and react.create element, followed by a step by step ramp up to babel/webpack integration and only end by demonstrating create-react-app as a way to do all that automatically and more.

Not the other way around.

I get the wow effect is sexy, but it's pedagogically backward. Or at least just use it to show off, then use the momentum to motivate the reader to start from scratch.

The hello world should just say hello, and how the same code in pure html, and then in vanilla js.

Also, while progressing, you needgo from tighly coupled monolitic components to clean reusable decoupled ones, illustrating common patterns little by little.

Yes, it's tempting to do it correctly the first time, and faster. But it's mixing several things to learn at the same time, which makes things a lot harder to grasp.

At last, the tutorial should start using es5, and introduce new es6, 7, and stage 3 stuff on the way, next to the matching babel config and typical use cases. Particularly imports, spread, arrow function and destructuring. You must understand: this week i was hired to give yet another react training. The students didn't even know what the dom was. It's very common.

A bigger app than a todo list should be achieved in the end, and it should, in it's very final state have an opiniated by the book ajax and router setup, plus a friendly way to share the state without going full blown flux. Then conclude, opening to other options, including but not limiting to a word on redux and mobx.

Yes, a good doc write about other tech. It's irritating, i understand. It's not your job after all. But django has a section explaining how to configure nginx and apache. They get that it's part of the experience.

A separate section should be dedicated to integration with popular frameworks in other languages such as ror or django.

All in all, it should not assume people are advanced js dev nor that they are familiar with the js ecosystem. Many new comers come from other languages and run npm for the first time.

This would make the official tutorial 10 times larger at the minimum. It's a good thing, but people looking for a quick reference would be annoyed. So you also need to keep the current version around, which is the short story and is great when you already know what you are looking at. And make explanations about js and its ecosystem in optional sections to avoid borring people that already know the stuff.

Two more additions are nessary.

One is a glossary you should hyperlink from everywhere in the doc.

Two are schemas showing off things like data flow, components life cycle, relation between the dom and virtual dom and rendering, main functions mapped to main use cases, etc.

It's a lot of work, i known. I wrote tons of those. It takes months. But that's the only way to get a great doc. Besides, react is not a simple tech despite what every tutorial says, and a lot of magic hide the "it's just javascripy" so people get confusew.

I sat down to learn Django many years ago and felt the same way:

While the learning curve seemed to go on and on, the documentation had a half-tutorial, half-specification answer for everything.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact