This is focusing on the guide chrome and structure, not text style or content. Also it does a good deal of assuming that popular means it's pretty good. Either way, we should probably catch up to the state of the art before we try to surpass it.
- React: https://facebook.github.io/react/docs/getting-started.html
- Rails: http://guides.rubyonrails.org/
- Django: https://docs.djangoproject.com/en/1.8/
- Ember.js: http://guides.emberjs.com/v2.0.0/templates/conditionals/
- Firebase has a great design/navigation structure. I think the three-level nav is pretty great: https://www.firebase.com/docs/android/guide/understanding-data.html
- Stripe: https://stripe.com/docs
- Split into pages - the fact that you can't infinitely scroll makes the information seem more digestible
- Search isn't necessary - React and Rails don't have it. Presumably SEO is much more important.
- There are introductory landing pages
- Some summarize the different parts of the framework
- React has a super quick getting started guide
- Tables of contents are by theme/activity/section, not sorted by API methods. Although there is also a place to get an API reference, it's de-emphasized
- “Forms”
- “Layouts and Rendering in Rails”
- “Introduction to Migrations”
- React has an “edit on GitHub” button
- React's docs are built with Jekyll: https://github.com/facebook/react/blob/master/docs/README.md
- I feel like if React's docs aren't built with React, we can stomach not building our docs in Meteor
- Hosted on GitHub pages
- Django and Rails have ways to get at docs for different versions, React doesn't
- Don't really differentiate tutorials and guide articles
- Make this guide the most authoritative, honest, and reliable source of best practices for Meteor. This should be exactly the same as what you would tell a trusted friend or paying customer to do in their app.
- Super easy to add content - there should never be a good reason to not put something in the guides/docs. There should be an infinite black hole of content, such that adding more content doesn't detract from what we already have.
- Has all of the content - We should be able to replace basically all of our READMEs, wiki pages, external docs sites, tutorials, etc. with one website that has all of the MDG-produced educational content that's out there. Blog posts and similar are fine for temporary content.
- Great SEO - Everyone just searches on Google to figure out how to do stuff. They should land on our docs if that is the best resource.
- Versioning - There are lots of benefits to having versioned docs, in particular that we don't have to keep backcompat with the old URLs etc. This can be as simple as deploying a new site for each release of Meteor.
- Encourage contributions - if someone got stuck on something, they should be able to suggest changes to the docs and we need a mechanism for accepting them. Also, contributing to the docs is the easiest path to starting out as an open source contributor.
- Don't be afraid of endorsing community packages that are part of the current best practice.
- Don't be afraid of writing down sketchy workarounds because they are embarrassing.
- Actually user test the guide on people we consider to be in our target audience. We could partner with an existing education provider to teach a class with it.
- Backwards compatibility with docs.meteor.com - This constraint has stopped us from innovating on the docs before. We shouldn't have to keep backcompat with all of the URLs, etc. If we figure out a way to properly version the docs such that all of the URLs are also versioned, we can avoid this problem in the future.
- Built-in search. SEO is more important, and we should have good organization so that people can use the nav to find stuff.
- Using Meteor. We should take the shortest path to a great experience, and we know that Meteor isn't optimized for sites with huge amounts of static content.
- Fancy features. Most guides are just plain text, organized in pages with a table of contents. If Rails can get by with that, we can too. Let's focus on writing great content over creating a fancy UX, at least to start with.
- Is it better to have the docs/guides in the same repository as the code?
- Benefits
- Can be versioned together
- A single pull request can contain docs and code for a feature
- Drawbacks
- Only works if the entire framework is in one repo - won't scale if we have separate repos anyway
- Harder for people to maintain translations
- Harder to discover where the docs live - a lot of people don't even know they are in meteor/meteor/docs
- Current decision
- Looks like separate repo is winning!
- Benefits
- GitHub pages
- Benefits
- Built-in continuous integration
- Guaranteed to load super fast and not have server-side dynamics
- Fairly standard for a wide variety of GitHub documentation
- Built for large websites with lots of markdown content
- Hosted by GitHub for free
- Restricted features mean it's easier for people to contribute
- Drawbacks
- Not JavaScript
- No easy way to look at versions, you only get one github pages site per repo/organization
- Benefits
- Custom site
- Benefits
- We can build appropriate abstractions
- JavaScript
- Could build versioning mechanism
- Disadvantages
- Custom stack could make it harder for people to contribute (although this could be mitigated by separating the complex code from the markdown content)
- Benefits
- Custom Jekyll setup
- Do continuous integration ourselves, with branches for different versions
- ReadTheDocs
- Not an option - the existing templates are terrible
- Readme.io
- Not an option - docs live online and not in the repo
- Sashko will figure out where we can host a continuously deployed basic Jekyll site, where we can have different versions built from different branches.
- Deliverable: proof of concept simple site deployed from two branches
- Stretch: deploy examples from pull requests