Writing Great
Documentation

  jacob@jacobian.org
66,000 lines of Python
75,000 lines of English
In Search of Lost Time   1,500,000

Infinite Jest              484,000

Django                    360,000

New Testament             180,000

Your first manuscript       60,000
“The documentation and community are second to none.”


“[W]e’ve found that people …can get up-to-speed relatively
quickly thanks to the excellent documentation…”


“Django … provides an excellent developer experience, with
great documentation and tutorials…”


“Our initial choice … was based on the strength of the
Django community and documentation…”


“Productive development, good documentation, flexibility,
and it just works.”

                                            http://j.mp/hnOsVl
My goal:
Documentation
   Culture.
Why do people read documentation?

Who should write documentation?

What should we document?

Which tools should we use?
Why do people read documentation?

Who should write documentation?

What should we document?

Which tools should we use?
First contact - new users.
First contact - new users.

Education - new & existing users.
First contact - new users.

Education - new & existing users.

Support - experienced users.
First contact - new users.

Education - new & existing users.

Support - experienced users.

Troubleshooting - annoyed users.
First contact - new users.

Education - new & existing users.

Support - experienced users.

Troubleshooting - annoyed users.

Internals - your fellow developers.
First contact - new users.

Education - new & existing users.

Support - experienced users.

Troubleshooting - annoyed users.

Internals - your fellow developers.

Reference - everyone.
Documentation is Communication.
Great documentation
has to serve multiple,
conflicting masters.
Why do people read documentation?

Who should write documentation?

What should we document?

Which tools should we use?
Anyone!
Anyone!
  But...
“A great way for new contributors to
get started with our project is to
contribute documentation.”
1. Use a wiki.

2. ...?

3. Great documentation!
A wiki tells me that you don’t really care
about your documentation.

So why should I care about
your software?
Great documentation
    is written by
 great developers.
“The code required to fix a problem… is an
essential part of a patch, but it is not the
only part. A good patch should also
include a regression test to validate the
behavior that has been fixed.”
“If the… patch adds a new feature, or
modifies behavior of an existing feature,
the patch should also contain
documentation.”
Documentation
Driven
Development?
Why do people read documentation?

Who should write documentation?

What should we document?

Which tools should we use?
Tutorials

Topic guides

Reference

Troubleshooting
Tutorials
Quick - a new user should experience
        success within 30 minutes.

Easy - help users feel epic win.

Not too easy - don’t sugar-coat the truth.

Show off how the project feels.
Topic guides

Conceptual - foster understanding,
             not parroting.

Comprehensive - explain in detail.

Tell me the why of the topic.
Reference

Complete. Docs or it doesn’t exist.

Designed for experienced users.

Give me the how of the topic.
Auto-generated reference
documentation is almost worthless.
There’s no substitute
  for documentation
 written, organized,
and edited by people.
Troubleshooting


Answers to questions asked in anger.

FAQs are great as long as the Qs are
really FA’d.
Great documentation
     is fractal
Tutorials

Topic guides

Reference

Troubleshooting
Project:
Tutorials, getting started.

Topic guides, How-to guides.

Reference material, APIs, indexes, search.

Troubleshooting guides, FAQs, KBs.
Document:
Introduction.

Overview guide.

Details, cross-references, next steps.

Notes, warnings.
Section:
Overview.

Tasks & examples.

Detailed descriptions.

Common pitfalls, warnings.
Element:
Examples.

Detailed instructions.

API documentation.

“If it didn’t work….”
Documentation is fractal
Inspiration: Jeff Osier-Mixon, Effectively Managing Documentation for Open Source Projects. http://bit.ly/g0PLFB


                                                   Topic                                 Trouble-
                            Tutorials                               Reference
                                                  guides                                 shooting

                            Tutorials,                                 APIs,
                                                 Guides,                                    FAQs,
        Project              Getting                                 indexes,
                                                 How-tos                                     KB
                             started                                  search

                         Introductory            How-to              See also,            Notes,
      Document
                           material              guides             next steps           warnings

                                                  Tasks,            Cross-ref -          Common
        Section            Overview
                                                examples           other topics           pitfalls

                                                Detailed            Cross-ref -         “If it didn’t
       Element             Examples
                                              instructions           API docs             work…”
Why do people read documentation?

Who should write documentation?

What should we document?

Which tools should we use?
Tools don’t matter.
Tools don’t matter.
     (For the most part.)
Text is best.

Aesthetics are important.

Discoverability is vital.
http://sphinx.pocoo.org/
Read the Docs                                                                     Sign up
            Create, host, and browse documentation.
                                                                                             or Log in




                    Read the Docs
What is this place?
Read the Docs hosts documentation, making it fully searchable and easy to find. You can import your docs
using any major version control system, including Mercurial, Git, Subversion, and Bazaar. It also supports
webhooks so your docs get built when you commit code. There's also support for versioning so you can build

                            http://readthedocs.org/
docs from tagged versions of your code in your repository. You can even create docs on the site. It's free and
simple. Read Getting Started and find out how to host your docs on Read the Docs!




Find a project

                                                                                      Let's do this.




Featured Projects

  Celery (asksol)                                                                                View Docs
Docco
 Pycco
Rocco
Shocco
Why do people read documentation?

Who should write documentation?

What should we document?

Which tools should we use?
Everyone reads documentation.

Who should write documentation?

What should we document?

Which tools should we use?
Everyone reads documentation.

Developers write great documentation.

What should we document?

Which tools should we use?
Everyone reads documentation.

Developers write great documentation.

Great documentation is fractal.

Which tools should we use?
Everyone reads documentation.

Developers write great documentation.

Great documentation is fractal.

Tools don’t matter. But use good ones!
My goal:
Documentation
   Culture.
Go.
  Write.

jacob@jacobian.org

Writing great documentation - CodeConf 2011