SlideShare a Scribd company logo
Write A Better FM

    /   Rich Bowen - rbowen@apache.org
That's Kathy Sierra
  She's amazing
Disclaimer




   • These are my OPINIONS, and, as
      such, are probably wrong in many
      projects/products/communities.
   • Mostly the result of ten years on
      the Apache HTTP Server
      documentation project
Everybody knows ...




     • Documentation in Open Source is
       terrible
     • Nobody wants to do it
     • This is simply a reality of Open
       Source, and we have to put up with
       it
Counterexample:




  • PHP's docs are pretty much the
    best available in Open Source
    today
  • Bias: I'm (sort of) on the PHP
    docs team.
Why are the PHP docs awesome?



    • Organized docs team outside of the
      dev team
    • Smart decisions about formats
    • Welcoming of contributions and
      criticisms
    • Documentation respected at the top
      level
    • And: https://edit.php.net/
So what?




    • Documentation is a priority
    • It's worth devoting resources to it
    • Documentation authors are not
      second-class citizens
The Truth




    • Lots of people want to write docs (some of
      them can even write a coherent sentence)

    • We make it way too hard for them to
      participate

    • So they flock to third-party forums, where
      they share misconceptions and worst-
      practice "solutions."
Have you noticed?




  The more likely a "support"
  channel is to say "RTFM", the
  worse the documentation is
  likely to be.
Smart Questions: Eric Raymond
RTFM and STFW: How To Tell You've Seriously Screwed
Up

There is an ancient and hallowed tradition: if you get a
reply that reads “RTFM”, the person who sent it thinks
you should have Read The F***ing Manual. He or she is
almost certainly right. Go read it.

RTFM has a younger relative. If you get a reply that reads
“STFW”, the person who sent it thinks you should have
Searched The F*ing Web. He or she is almost certainly
right. Go search it. (The milder version of this is when
you are told “Google is your friend!”)
Eric Is Wrong
      It is not a "hallowed
             tradition".
     It's bad manners, and
            it's juvenile.
     It's time to grow up.


CC Jumer, Flickr
RTFM



   The RTFM attitude is indicative of
   arrogance and impatience, whereas
   truly great documentation is the
   result of patience and humility


       (Yes, they should read the docs. No, you
                           should not be rude.)
Questions to consider:

  What is the "right" scope for
     the documentation?


 • What should the documentation
    cover?
 • How should we go about getting
    there?
Or, stated differently:


       "Your documentation is
  inadequate for my specific weirdo
             situation."


     •  Should we care?
     • What should we do about
        it?
Document Scope


Most projects never ask
these questions, which is
  • What should the
why documentation cover?
     their documentation
  •    is so awful.
    How should we go about
      getting there?
Document scope: The Right Answer




    • There is not necessarily a single
      right answer
    • However, it is important to decide
      on an answer, and stick to it
Question 2

Who are you addressing in your
      documentation?

    • Usually (at least) two answers to this:
     • Developers (core product - API docs)
     • Customizers (how do I make it do
         X?)
      • End-users (Just make the darned
         thing work?)
Audience => Concerns




    • Just make it work
    • Security
    • Performance
    • Maintenance
Audience => Concerns




    • Just make it work all
           These are
    • Security questions
          valid
    • Performance
    • Maintenance
PHP: Audiences



    • Core developers (API docs)
    • Server admins (install, configure,
      security)
    • Programmers (Reference manual)
    • Hobbyists (I just wanna ...)
    • Maintainers (This product is written in
      php and ...)
Apache HTTP Server: Audiences



    •   Developers (core)

    •   Developers (Third-party modules)

    •   Server admins (install, configure, secure)

    •   Developers (stuff on top of Apache)

    •   Website developers (HTML, Javascript, CSS)

    •   Users of third-party products that live on top
        of Apache
Drupal: Audiences


    • Developers (core)
    • Developers (extensions)
    • Theme developers
    • System admins
    • End users
    • All of these folks also need the PHP docs
       and the Apache docs, but may come to us
       with their seemingly off-topic questions
Good
Not so good
Terrible
Clarification:




     • It's not the mysql documentation that is
        terrible
     • It's the way the front page of the docs
        says "Go Away You Criminal"
     • It's the FBI Warning of Open Source
        documentation
Will it ever end?
Will it ever end?
Will it ever end?
Yes, it's all one page
So what?



    • You need to answer the kinds of
      questions they're likely to have
    • You need to respect each audience,
      while not ignoring any of them
    • There is, of course, HUGE overlap
    • But also there are areas that are only of
      interest to one audience or the other
Remember also that
                      your audience are not
                      all white american
                      males
                      Inside jokes and
                      cultural references are
                      unprofessional ...
                      usually



CC alexkess, Flickr
Haystack




    •   My favorite function doc, anywhere

    •   Immediately obvious

    •   But how does it work for folks that aren't as
        proficient in English?
Lovely Plumage
Codex
Wordpress




    • Wordpress are a bunch of spoilsports
    • Their docs used to be worth at least a
      half-dozen slides
Apache HTTP Server
So ...




                                          hernan.seoane,
                                              Flickr

                                               CC
     • Once you think you know who your
         audience is ...
What questions are they asking?




     •   When your product is young, you answer the
         questions that you expect to be asked

     •   As it matures, you should listen to what's actually
         being asked
What questions are they asking?

  Most documentation never
  progresses past this point


     •   When your product is young, you answer the
         questions that you expect to be asked

     •   As it matures, you should listen to what's actually
         being asked
How docs are born




    •   Documentation tends to have one of two beginnings

        •   Proactive: What do we think people will ask?

        •   Reactive: What are people asking?
What are the questions?



     • You have to actually listen
     • You have to go where they're asking
      • Mailing lists
      • IRC
      • Third-party forums
     • Their questions matter to them. Be
       respectful
A word about IRC:



    • You are brutal on IRC and on your users
       support mailing list
    • You treat every question as though the
       questioner has brain damage, and is
       beneath your scorn
    • The exceptions to this are so uncommon
       that they seem shocking when you
       encounter common courtesy.
The three virtues   CC Sarahkim, Flickr




     • Laziness
     • Impatience
     • Hubris
Laziness




    • Answer the question thoroughly, once
    • Save your answer
    • Next time, give them a URL
    • Better to do something well, once, than
       do to it poorly, again and again
Patience




    • Impatience with the question comes
       across as disrespect for the questioner
    • Arrogance and disrespect are at the
       heart of the RTFM mindset
    • If you cannot be patient, please let
       someone else answer the question
Patience




  Love is patient, love is kind ... it
does not keep a record of offenses.
    (I Corinthians 13 - The Bible)
Humility




    • You don't know everything
    • The documentation isn't perfect
      yet
    • Remember that once you, too,
      were completely ignorant
FALSE
• There's no such thing as the wrong
  question: False - but it's your job to guide
  them to the right question, and its answer

• There's no such thing as a stupid question
    (but there are a lot of inquisitive idiots)
How do we answer them?




    • Reference manual
    • HowTos
    • FAQs
    • Examples
Reference Manual



    • Comprehensive and exhaustive
    • Correct
    • Consistent format
    • Best practice
    • Lots of examples
    • All examples must be tested
Correct




    • Obvious, right?
    • You'd think
Comprehensive




    • What the heck are sprintf(3) and
      printf(3)?
    • I came here for the general principles
Comprehensive



    • However ... "Comprehensive" needs to
      be clearly defined
    • Do the PHP docs need to cover the
      history of computing?
    • Do the Apache docs need to cover
      HTML?
    • (i.e., you need to know your answer to
      question #1)
Consistent format
Consistent Format
Best practice




     • Beginners often just want it to work
     • The best answer is often more
       complicated than the good enough
       answer
     • Doing it right now saves time and
       tears later
Third-party "documentation"


    •   Usually focused on "good enough"

    •   Thus usually insecure, inefficient, or fragile
Almost right ...
Examples




    •   Simple

    •   Copious

    •   Tested

    •   Consistent use of a fictitious site/project/
        implementation
Examples: Simple
 •   Simplest example that illustrates the concept

 •   Explained in exhaustive detail

 •   Perhaps followed by more complex examples
The curse of simple examples

  If an example is simple enough to
explain in a paragraph, there's a good
chance it's not a very good example.
    RewriteRule ^/(designer|typeface|foundry|project|
supplement|typeface_category)/?([^/]+)?/?(d+)?$ http://
 localhost:8080/$1.html?name=$2&page=$3 [P,QSA,L]

                            Corollary: A really good
                          example which takes 8 pages
                            to explain is not a good
                                   example.
Examples: Copious




    •   More examples are always better than fewer

    •   ... if they are useful examples

    •   ... and are explained adequately

    •   O'Reilly's Cookbooks are consistently best-
        sellers
Example from the Apache 1.3
mod_rewrite documentation
Examples: Tested




    •   Few things spread faster than incorrect
        examples

    •   Test every example. Even ones that seem
        trivial

    •   Incorrect examples lead to many, many hours
        of lost productivity
Test::POD




    • The examples are in the
      documentation, and automatically
      become tests
    • It's practically magic
Examples Inc.




    •   Construct an imaginary project/company/site/
        whatever

    •   Consistently refer to it in the documentation

    •   example.org or Acme Widgets, Inc, for
        example

    •   Changing the hero of your story in the middle
        confuses the reader
Examples: Useful

<h1>El Jefe's Tours</h1>
<form action="path to setECURL" method="post">
<input id="submitBtn" type="submit"
   value="Pay with PayPal" />
<input type="hidden" name="success_url"
     value="path to successURL" />
<input type="hidden" name="cancel_url"
       value="path to cancelURL">
</form>
<!-- End custom merchant code -->
<!-- Example courtesy of PayPal documentation -->
Examples: Useful


<h1>El Jefe's Tours</h1> It took two hours
<form action="path to setECURL" method="post">
<input id="submitBtn" type="submit" the wrong
                          to find
   value="Pay with PayPal" />
                              value, and a
<input type="hidden" name="success_url"
                            further hour to
     value="path to successURL" />
<input type="hidden" name="cancel_url"
                              find the right
       value="path to cancelURL">
</form>                  value ... which still
<!-- End custom merchant code -->
                        didn't work.
PayPal


    •    I will spare you any more PayPal examples

    •    Mocking the PayPal documentation is a little
         like kicking puppies

    •    At least they are aware that their
         documentation is terrible, and so provide
         great online support (Twitter, Forums)




                                         Flickr: g-mikee
HowTos and Tutorials




    • Complete - cover even the trivial steps.
    • Never say "easy", "trivial", "simple", or "of
       course". Your reader is there because it's
       not.

    • Test it. Repeatedly. On multiple systems.
    • Let your inexperienced co-workers read it.
HowTos and Tutorials




    • Complete - cover even the trivial steps.

      This is a delicate balance - between
       deciding what's in scope, and not
     leaving them to figure out everything
                  on their own
Don't mock your customers
FAQs




   • FAQs are often an admission that the
       documentation is insufficient

   • Should be a call for improving the docs, or
       even a scratch-pad for the new docs

   • Most FAQs should be answered with "here's
       where that's covered in the docs."
Documentation format




    •   The choice of a documentation format can be
        quite divisive

    •   Choosing wrong can lead to many problems

    •   Of course, there is no right choice, either
Format considerations




    • Easy to edit
    • Multiple output formats
    • Translation-friendly
    • Text (ie, non-binary format)
    • Revision control
Options include




    •   Docbook or other XML

    •   Wikis (Makes translation difficult)

    •   POD (In certain cultures)

    •   JavaDoc (or phpdoc, or rubydoc)

    •   If other projects in the same space have a
        consistent format, don't try to be clever
Searchable

 • Excellent documentation without a decent
   search isn't worth anything
 • There is no excuse for not having a good
   search. Google will do it for you for free.




      CC Stéfan, Flickr
Encouraging participation




     • Make it easy for people to complain
     • Take their complaints seriously
     • Don't get offended when they tell you the
       docs suck
     • Do something about it
PHP



      • PHP does this really well
... but




      •   They're pretty much alone in this
Everyone else:



     • Create an account       I just wanted to
                               tell you that you
     • Get a checkout              misspelled
     • Subscribe to this list       "peony"

     • Create a ticket in Bugzilla
     • Email a patch
     • Follow up on that list
Git




      • Half of you are itching to tell me that
        Git solves this problem
      • This may in fact be true for certain
        projects
Welcome contributions




    •   Make it obvious how to submit comments,
        improvements, errata

    •   Don't ignore them once they're submitted

    •   Be quick to offer commit rights to repeat
        customers
Going to the source




     • The developers (often) don't like writing
       docs

     • When they realize you do, they'll be willing
       to answer your questions
Also, the source

• Learn to read the
  source code
• It will save you
  many tears in the
  long run
• However, don't
  require
  programming
  knowledge to
  participate in the
  documentation
Error messages


    •   Error messages are documentation, too




     else if (!(status & LP_PERRORP)) { if (last !=
         LP_PERRORP) { last = LP_PERRORP;
   printk(KERN_INFO "lp%d on firen", minor); } }
                                 Linux printer driver, circa 2.2.1
How much to say




    • What should the documentation not cover?
    • You must decide what things are outside of
      the scope

    • Once you cross the line, you'll end up
      writing books, and down that road lies
      madness
Work for it
     We have a tendency to want to make them
     work for the information, either in a
     mistaken notion that this will make them
     remember it, or merely because we had to
     work for it, so they should too


                      Well, in my day, we had
                   to edit the inodes with a bar
                     magnet! Go figure it out
                          yourself, punk!



                        CC by hiro008, flickr
Harness the whining




                                          cc cindy47452 flickr

  •   Whiners -> Contributors: HARD, but worthwhile

  • Potential contributors -> Whiners: EASY
Your
          documentation sucks


      Shut up.You're ugly and your mother
               dresses you funny.



 Result:Your documentation still sucks, and
you've alienated someone who wanted, albeit
             misguidedly, to help.
Your
           documentation sucks



     How do you think we could improve it?




Result: Your documentation might get better,
and, even if it doesn't, you've told one person
  that you care what your customers think.
Questions?




    •   rbowen@apache.org

    •   http://slideshare.net/rbowen <-- Slides here

    •   http://betterfm.org/

    •   http://redwoodopen.org/

    •   http://omniti.com/is/hiring

More Related Content

What's hot

Шаблоны проектирования письменной коммуникации
Шаблоны проектирования письменной коммуникацииШаблоны проектирования письменной коммуникации
Шаблоны проектирования письменной коммуникацииSQALab
 
Selfish Accessibility: WordCamp London 2017
Selfish Accessibility: WordCamp London 2017Selfish Accessibility: WordCamp London 2017
Selfish Accessibility: WordCamp London 2017
Adrian Roselli
 
Guelph A11y Conf: Everything I Know About Accessibility I Learned from Stack ...
Guelph A11y Conf: Everything I Know About Accessibility I Learned from Stack ...Guelph A11y Conf: Everything I Know About Accessibility I Learned from Stack ...
Guelph A11y Conf: Everything I Know About Accessibility I Learned from Stack ...
Adrian Roselli
 
LeanStartup:Research is cheaper than development
LeanStartup:Research is cheaper than developmentLeanStartup:Research is cheaper than development
LeanStartup:Research is cheaper than developmentJohn McCaffrey
 
Selfish Accessibility — CodeDaze
Selfish Accessibility — CodeDazeSelfish Accessibility — CodeDaze
Selfish Accessibility — CodeDaze
Adrian Roselli
 
Selfish Accessibility — Harbour Front HK
Selfish Accessibility — Harbour Front HKSelfish Accessibility — Harbour Front HK
Selfish Accessibility — Harbour Front HK
Adrian Roselli
 

What's hot (6)

Шаблоны проектирования письменной коммуникации
Шаблоны проектирования письменной коммуникацииШаблоны проектирования письменной коммуникации
Шаблоны проектирования письменной коммуникации
 
Selfish Accessibility: WordCamp London 2017
Selfish Accessibility: WordCamp London 2017Selfish Accessibility: WordCamp London 2017
Selfish Accessibility: WordCamp London 2017
 
Guelph A11y Conf: Everything I Know About Accessibility I Learned from Stack ...
Guelph A11y Conf: Everything I Know About Accessibility I Learned from Stack ...Guelph A11y Conf: Everything I Know About Accessibility I Learned from Stack ...
Guelph A11y Conf: Everything I Know About Accessibility I Learned from Stack ...
 
LeanStartup:Research is cheaper than development
LeanStartup:Research is cheaper than developmentLeanStartup:Research is cheaper than development
LeanStartup:Research is cheaper than development
 
Selfish Accessibility — CodeDaze
Selfish Accessibility — CodeDazeSelfish Accessibility — CodeDaze
Selfish Accessibility — CodeDaze
 
Selfish Accessibility — Harbour Front HK
Selfish Accessibility — Harbour Front HKSelfish Accessibility — Harbour Front HK
Selfish Accessibility — Harbour Front HK
 

Viewers also liked

11 класс для мудлпрограмма курса «электромагнетизм» 3 курс
11 класс для мудлпрограмма курса «электромагнетизм» 3 курс11 класс для мудлпрограмма курса «электромагнетизм» 3 курс
11 класс для мудлпрограмма курса «электромагнетизм» 3 курсsalimaader
 
Polimeros - Álvaro 1º A
Polimeros - Álvaro 1º APolimeros - Álvaro 1º A
Polimeros - Álvaro 1º AEscuela CAE
 
3 e56rfghjcgid bvgv fdyrujikli8youhjoluho
3 e56rfghjcgid bvgv fdyrujikli8youhjoluho3 e56rfghjcgid bvgv fdyrujikli8youhjoluho
3 e56rfghjcgid bvgv fdyrujikli8youhjoluhoFrancescaa Ignaciaa
 
Lotus Connections Schaalbaarheid En Performance
Lotus Connections   Schaalbaarheid En PerformanceLotus Connections   Schaalbaarheid En Performance
Lotus Connections Schaalbaarheid En PerformanceSocial Software Blog
 
First Annual SBxEFF (2012)
First Annual SBxEFF (2012)First Annual SBxEFF (2012)
First Annual SBxEFF (2012)
jczarka
 

Viewers also liked (6)

11 класс для мудлпрограмма курса «электромагнетизм» 3 курс
11 класс для мудлпрограмма курса «электромагнетизм» 3 курс11 класс для мудлпрограмма курса «электромагнетизм» 3 курс
11 класс для мудлпрограмма курса «электромагнетизм» 3 курс
 
Polimeros - Álvaro 1º A
Polimeros - Álvaro 1º APolimeros - Álvaro 1º A
Polimeros - Álvaro 1º A
 
3 e56rfghjcgid bvgv fdyrujikli8youhjoluho
3 e56rfghjcgid bvgv fdyrujikli8youhjoluho3 e56rfghjcgid bvgv fdyrujikli8youhjoluho
3 e56rfghjcgid bvgv fdyrujikli8youhjoluho
 
Lotus Connections Schaalbaarheid En Performance
Lotus Connections   Schaalbaarheid En PerformanceLotus Connections   Schaalbaarheid En Performance
Lotus Connections Schaalbaarheid En Performance
 
Funny Images672
Funny Images672Funny Images672
Funny Images672
 
First Annual SBxEFF (2012)
First Annual SBxEFF (2012)First Annual SBxEFF (2012)
First Annual SBxEFF (2012)
 

Similar to Write A Better FM - Ohio Linux 2011

How to Prepare for and Survive a Technical Interview
How to Prepare for and Survive a Technical InterviewHow to Prepare for and Survive a Technical Interview
How to Prepare for and Survive a Technical Interview
Perl Careers
 
Library Linked Data
Library Linked DataLibrary Linked Data
Library Linked Data
Dorothea Salo
 
Lipstick on a Pig: Integrated Library Systems
Lipstick on a Pig: Integrated Library SystemsLipstick on a Pig: Integrated Library Systems
Lipstick on a Pig: Integrated Library Systems
Dorothea Salo
 
Preservation and institutional repositories for the digital arts and humanities
Preservation and institutional repositories for the digital arts and humanitiesPreservation and institutional repositories for the digital arts and humanities
Preservation and institutional repositories for the digital arts and humanities
Dorothea Salo
 
Solving Problems with Web 2.0
Solving Problems with Web 2.0Solving Problems with Web 2.0
Solving Problems with Web 2.0
Dorothea Salo
 
Contributing to Open Source
Contributing to Open SourceContributing to Open Source
Contributing to Open Source
Daniel Stenberg
 
Reactive Writing Techniques for Rewarding and Retaining Users
Reactive Writing Techniques for Rewarding and Retaining UsersReactive Writing Techniques for Rewarding and Retaining Users
Reactive Writing Techniques for Rewarding and Retaining Users
grebstock
 
2016-How-to-give-a-great-research-talk.pdf
2016-How-to-give-a-great-research-talk.pdf2016-How-to-give-a-great-research-talk.pdf
2016-How-to-give-a-great-research-talk.pdf
Tony Khánh
 
Running a Successful Open Source Project
Running a Successful Open Source ProjectRunning a Successful Open Source Project
Running a Successful Open Source Project
Rob Reynolds
 
Liz McCarthy: Publication Without Tears: Tips for Aspiring Authors
Liz McCarthy: Publication Without Tears: Tips for Aspiring AuthorsLiz McCarthy: Publication Without Tears: Tips for Aspiring Authors
Liz McCarthy: Publication Without Tears: Tips for Aspiring Authors
Bodleian Libraries Staff Development
 
How to write a thesis and survive the process
How to write a thesis and survive the processHow to write a thesis and survive the process
How to write a thesis and survive the process
Sofia Gomes
 
What every successful open source project needs
What every successful open source project needsWhat every successful open source project needs
What every successful open source project needs
Steven Francia
 
"How do you think when you're coding?", Jon Skeet
"How do you think when you're coding?",  Jon Skeet"How do you think when you're coding?",  Jon Skeet
"How do you think when you're coding?", Jon Skeet
Fwdays
 
PhD Recipe
PhD RecipePhD Recipe
PhD RecipeDeb Roy
 
Linked Data: The Real Web 2.0 (from 2008)
Linked Data: The Real Web 2.0 (from 2008)Linked Data: The Real Web 2.0 (from 2008)
Linked Data: The Real Web 2.0 (from 2008)
Uche Ogbuji
 
Virtual Reference
Virtual ReferenceVirtual Reference
Virtual Reference
Emily Porta
 
Writing Workshop 2
Writing Workshop 2Writing Workshop 2
Writing Workshop 2
cs404ta
 
Technical Communication for Unity Developers
Technical Communication for Unity DevelopersTechnical Communication for Unity Developers
Technical Communication for Unity Developers
Unity Technologies
 
Contextualized Online Search and Research Skills.pptx
Contextualized Online Search and Research Skills.pptxContextualized Online Search and Research Skills.pptx
Contextualized Online Search and Research Skills.pptx
JhayRom
 

Similar to Write A Better FM - Ohio Linux 2011 (20)

How to Prepare for and Survive a Technical Interview
How to Prepare for and Survive a Technical InterviewHow to Prepare for and Survive a Technical Interview
How to Prepare for and Survive a Technical Interview
 
Library Linked Data
Library Linked DataLibrary Linked Data
Library Linked Data
 
Lipstick on a Pig: Integrated Library Systems
Lipstick on a Pig: Integrated Library SystemsLipstick on a Pig: Integrated Library Systems
Lipstick on a Pig: Integrated Library Systems
 
Preservation and institutional repositories for the digital arts and humanities
Preservation and institutional repositories for the digital arts and humanitiesPreservation and institutional repositories for the digital arts and humanities
Preservation and institutional repositories for the digital arts and humanities
 
Solving Problems with Web 2.0
Solving Problems with Web 2.0Solving Problems with Web 2.0
Solving Problems with Web 2.0
 
Contributing to Open Source
Contributing to Open SourceContributing to Open Source
Contributing to Open Source
 
Metadata
MetadataMetadata
Metadata
 
Reactive Writing Techniques for Rewarding and Retaining Users
Reactive Writing Techniques for Rewarding and Retaining UsersReactive Writing Techniques for Rewarding and Retaining Users
Reactive Writing Techniques for Rewarding and Retaining Users
 
2016-How-to-give-a-great-research-talk.pdf
2016-How-to-give-a-great-research-talk.pdf2016-How-to-give-a-great-research-talk.pdf
2016-How-to-give-a-great-research-talk.pdf
 
Running a Successful Open Source Project
Running a Successful Open Source ProjectRunning a Successful Open Source Project
Running a Successful Open Source Project
 
Liz McCarthy: Publication Without Tears: Tips for Aspiring Authors
Liz McCarthy: Publication Without Tears: Tips for Aspiring AuthorsLiz McCarthy: Publication Without Tears: Tips for Aspiring Authors
Liz McCarthy: Publication Without Tears: Tips for Aspiring Authors
 
How to write a thesis and survive the process
How to write a thesis and survive the processHow to write a thesis and survive the process
How to write a thesis and survive the process
 
What every successful open source project needs
What every successful open source project needsWhat every successful open source project needs
What every successful open source project needs
 
"How do you think when you're coding?", Jon Skeet
"How do you think when you're coding?",  Jon Skeet"How do you think when you're coding?",  Jon Skeet
"How do you think when you're coding?", Jon Skeet
 
PhD Recipe
PhD RecipePhD Recipe
PhD Recipe
 
Linked Data: The Real Web 2.0 (from 2008)
Linked Data: The Real Web 2.0 (from 2008)Linked Data: The Real Web 2.0 (from 2008)
Linked Data: The Real Web 2.0 (from 2008)
 
Virtual Reference
Virtual ReferenceVirtual Reference
Virtual Reference
 
Writing Workshop 2
Writing Workshop 2Writing Workshop 2
Writing Workshop 2
 
Technical Communication for Unity Developers
Technical Communication for Unity DevelopersTechnical Communication for Unity Developers
Technical Communication for Unity Developers
 
Contextualized Online Search and Research Skills.pptx
Contextualized Online Search and Research Skills.pptxContextualized Online Search and Research Skills.pptx
Contextualized Online Search and Research Skills.pptx
 

More from Rich Bowen

The apacheway
The apachewayThe apacheway
The apacheway
Rich Bowen
 
Why your employees should contribute to Open Source
Why your employees should contribute to Open SourceWhy your employees should contribute to Open Source
Why your employees should contribute to Open SourceRich Bowen
 
URL Mapping, with and without mod_rewrite
URL Mapping, with and without mod_rewriteURL Mapping, with and without mod_rewrite
URL Mapping, with and without mod_rewrite
Rich Bowen
 
Don't be a jerk
Don't be a jerkDon't be a jerk
Don't be a jerk
Rich Bowen
 
mod_rewrite bootcamp, Ohio LInux 2011
mod_rewrite bootcamp, Ohio LInux 2011mod_rewrite bootcamp, Ohio LInux 2011
mod_rewrite bootcamp, Ohio LInux 2011Rich Bowen
 
Apache Wizardry - Ohio Linux 2011
Apache Wizardry - Ohio Linux 2011Apache Wizardry - Ohio Linux 2011
Apache Wizardry - Ohio Linux 2011Rich Bowen
 
Apache Cookbook - TekX Chicago 2010
Apache Cookbook - TekX Chicago 2010Apache Cookbook - TekX Chicago 2010
Apache Cookbook - TekX Chicago 2010
Rich Bowen
 

More from Rich Bowen (7)

The apacheway
The apachewayThe apacheway
The apacheway
 
Why your employees should contribute to Open Source
Why your employees should contribute to Open SourceWhy your employees should contribute to Open Source
Why your employees should contribute to Open Source
 
URL Mapping, with and without mod_rewrite
URL Mapping, with and without mod_rewriteURL Mapping, with and without mod_rewrite
URL Mapping, with and without mod_rewrite
 
Don't be a jerk
Don't be a jerkDon't be a jerk
Don't be a jerk
 
mod_rewrite bootcamp, Ohio LInux 2011
mod_rewrite bootcamp, Ohio LInux 2011mod_rewrite bootcamp, Ohio LInux 2011
mod_rewrite bootcamp, Ohio LInux 2011
 
Apache Wizardry - Ohio Linux 2011
Apache Wizardry - Ohio Linux 2011Apache Wizardry - Ohio Linux 2011
Apache Wizardry - Ohio Linux 2011
 
Apache Cookbook - TekX Chicago 2010
Apache Cookbook - TekX Chicago 2010Apache Cookbook - TekX Chicago 2010
Apache Cookbook - TekX Chicago 2010
 

Recently uploaded

Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 

Recently uploaded (20)

Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 

Write A Better FM - Ohio Linux 2011

  • 1. Write A Better FM / Rich Bowen - rbowen@apache.org
  • 2. That's Kathy Sierra She's amazing
  • 3. Disclaimer • These are my OPINIONS, and, as such, are probably wrong in many projects/products/communities. • Mostly the result of ten years on the Apache HTTP Server documentation project
  • 4. Everybody knows ... • Documentation in Open Source is terrible • Nobody wants to do it • This is simply a reality of Open Source, and we have to put up with it
  • 5. Counterexample: • PHP's docs are pretty much the best available in Open Source today • Bias: I'm (sort of) on the PHP docs team.
  • 6. Why are the PHP docs awesome? • Organized docs team outside of the dev team • Smart decisions about formats • Welcoming of contributions and criticisms • Documentation respected at the top level • And: https://edit.php.net/
  • 7.
  • 8.
  • 9. So what? • Documentation is a priority • It's worth devoting resources to it • Documentation authors are not second-class citizens
  • 10. The Truth • Lots of people want to write docs (some of them can even write a coherent sentence) • We make it way too hard for them to participate • So they flock to third-party forums, where they share misconceptions and worst- practice "solutions."
  • 11. Have you noticed? The more likely a "support" channel is to say "RTFM", the worse the documentation is likely to be.
  • 12. Smart Questions: Eric Raymond RTFM and STFW: How To Tell You've Seriously Screwed Up There is an ancient and hallowed tradition: if you get a reply that reads “RTFM”, the person who sent it thinks you should have Read The F***ing Manual. He or she is almost certainly right. Go read it. RTFM has a younger relative. If you get a reply that reads “STFW”, the person who sent it thinks you should have Searched The F*ing Web. He or she is almost certainly right. Go search it. (The milder version of this is when you are told “Google is your friend!”)
  • 13. Eric Is Wrong It is not a "hallowed tradition". It's bad manners, and it's juvenile. It's time to grow up. CC Jumer, Flickr
  • 14. RTFM The RTFM attitude is indicative of arrogance and impatience, whereas truly great documentation is the result of patience and humility (Yes, they should read the docs. No, you should not be rude.)
  • 15. Questions to consider: What is the "right" scope for the documentation? • What should the documentation cover? • How should we go about getting there?
  • 16. Or, stated differently: "Your documentation is inadequate for my specific weirdo situation." • Should we care? • What should we do about it?
  • 17. Document Scope Most projects never ask these questions, which is • What should the why documentation cover? their documentation • is so awful. How should we go about getting there?
  • 18. Document scope: The Right Answer • There is not necessarily a single right answer • However, it is important to decide on an answer, and stick to it
  • 19. Question 2 Who are you addressing in your documentation? • Usually (at least) two answers to this: • Developers (core product - API docs) • Customizers (how do I make it do X?) • End-users (Just make the darned thing work?)
  • 20. Audience => Concerns • Just make it work • Security • Performance • Maintenance
  • 21. Audience => Concerns • Just make it work all These are • Security questions valid • Performance • Maintenance
  • 22. PHP: Audiences • Core developers (API docs) • Server admins (install, configure, security) • Programmers (Reference manual) • Hobbyists (I just wanna ...) • Maintainers (This product is written in php and ...)
  • 23. Apache HTTP Server: Audiences • Developers (core) • Developers (Third-party modules) • Server admins (install, configure, secure) • Developers (stuff on top of Apache) • Website developers (HTML, Javascript, CSS) • Users of third-party products that live on top of Apache
  • 24. Drupal: Audiences • Developers (core) • Developers (extensions) • Theme developers • System admins • End users • All of these folks also need the PHP docs and the Apache docs, but may come to us with their seemingly off-topic questions
  • 25.
  • 26. Good
  • 29. Clarification: • It's not the mysql documentation that is terrible • It's the way the front page of the docs says "Go Away You Criminal" • It's the FBI Warning of Open Source documentation
  • 30. Will it ever end?
  • 31. Will it ever end?
  • 32. Will it ever end?
  • 33. Yes, it's all one page
  • 34. So what? • You need to answer the kinds of questions they're likely to have • You need to respect each audience, while not ignoring any of them • There is, of course, HUGE overlap • But also there are areas that are only of interest to one audience or the other
  • 35. Remember also that your audience are not all white american males Inside jokes and cultural references are unprofessional ... usually CC alexkess, Flickr
  • 36. Haystack • My favorite function doc, anywhere • Immediately obvious • But how does it work for folks that aren't as proficient in English?
  • 38. Codex
  • 39. Wordpress • Wordpress are a bunch of spoilsports • Their docs used to be worth at least a half-dozen slides
  • 41. So ... hernan.seoane, Flickr CC • Once you think you know who your audience is ...
  • 42. What questions are they asking? • When your product is young, you answer the questions that you expect to be asked • As it matures, you should listen to what's actually being asked
  • 43. What questions are they asking? Most documentation never progresses past this point • When your product is young, you answer the questions that you expect to be asked • As it matures, you should listen to what's actually being asked
  • 44. How docs are born • Documentation tends to have one of two beginnings • Proactive: What do we think people will ask? • Reactive: What are people asking?
  • 45. What are the questions? • You have to actually listen • You have to go where they're asking • Mailing lists • IRC • Third-party forums • Their questions matter to them. Be respectful
  • 46. A word about IRC: • You are brutal on IRC and on your users support mailing list • You treat every question as though the questioner has brain damage, and is beneath your scorn • The exceptions to this are so uncommon that they seem shocking when you encounter common courtesy.
  • 47. The three virtues CC Sarahkim, Flickr • Laziness • Impatience • Hubris
  • 48. Laziness • Answer the question thoroughly, once • Save your answer • Next time, give them a URL • Better to do something well, once, than do to it poorly, again and again
  • 49. Patience • Impatience with the question comes across as disrespect for the questioner • Arrogance and disrespect are at the heart of the RTFM mindset • If you cannot be patient, please let someone else answer the question
  • 50. Patience Love is patient, love is kind ... it does not keep a record of offenses. (I Corinthians 13 - The Bible)
  • 51. Humility • You don't know everything • The documentation isn't perfect yet • Remember that once you, too, were completely ignorant
  • 52. FALSE • There's no such thing as the wrong question: False - but it's your job to guide them to the right question, and its answer • There's no such thing as a stupid question (but there are a lot of inquisitive idiots)
  • 53. How do we answer them? • Reference manual • HowTos • FAQs • Examples
  • 54. Reference Manual • Comprehensive and exhaustive • Correct • Consistent format • Best practice • Lots of examples • All examples must be tested
  • 55. Correct • Obvious, right? • You'd think
  • 56. Comprehensive • What the heck are sprintf(3) and printf(3)? • I came here for the general principles
  • 57. Comprehensive • However ... "Comprehensive" needs to be clearly defined • Do the PHP docs need to cover the history of computing? • Do the Apache docs need to cover HTML? • (i.e., you need to know your answer to question #1)
  • 60. Best practice • Beginners often just want it to work • The best answer is often more complicated than the good enough answer • Doing it right now saves time and tears later
  • 61. Third-party "documentation" • Usually focused on "good enough" • Thus usually insecure, inefficient, or fragile
  • 63. Examples • Simple • Copious • Tested • Consistent use of a fictitious site/project/ implementation
  • 64. Examples: Simple • Simplest example that illustrates the concept • Explained in exhaustive detail • Perhaps followed by more complex examples
  • 65. The curse of simple examples If an example is simple enough to explain in a paragraph, there's a good chance it's not a very good example. RewriteRule ^/(designer|typeface|foundry|project| supplement|typeface_category)/?([^/]+)?/?(d+)?$ http:// localhost:8080/$1.html?name=$2&page=$3 [P,QSA,L] Corollary: A really good example which takes 8 pages to explain is not a good example.
  • 66. Examples: Copious • More examples are always better than fewer • ... if they are useful examples • ... and are explained adequately • O'Reilly's Cookbooks are consistently best- sellers
  • 67. Example from the Apache 1.3 mod_rewrite documentation
  • 68. Examples: Tested • Few things spread faster than incorrect examples • Test every example. Even ones that seem trivial • Incorrect examples lead to many, many hours of lost productivity
  • 69. Test::POD • The examples are in the documentation, and automatically become tests • It's practically magic
  • 70. Examples Inc. • Construct an imaginary project/company/site/ whatever • Consistently refer to it in the documentation • example.org or Acme Widgets, Inc, for example • Changing the hero of your story in the middle confuses the reader
  • 71. Examples: Useful <h1>El Jefe's Tours</h1> <form action="path to setECURL" method="post"> <input id="submitBtn" type="submit" value="Pay with PayPal" /> <input type="hidden" name="success_url" value="path to successURL" /> <input type="hidden" name="cancel_url" value="path to cancelURL"> </form> <!-- End custom merchant code --> <!-- Example courtesy of PayPal documentation -->
  • 72. Examples: Useful <h1>El Jefe's Tours</h1> It took two hours <form action="path to setECURL" method="post"> <input id="submitBtn" type="submit" the wrong to find value="Pay with PayPal" /> value, and a <input type="hidden" name="success_url" further hour to value="path to successURL" /> <input type="hidden" name="cancel_url" find the right value="path to cancelURL"> </form> value ... which still <!-- End custom merchant code --> didn't work.
  • 73. PayPal • I will spare you any more PayPal examples • Mocking the PayPal documentation is a little like kicking puppies • At least they are aware that their documentation is terrible, and so provide great online support (Twitter, Forums) Flickr: g-mikee
  • 74. HowTos and Tutorials • Complete - cover even the trivial steps. • Never say "easy", "trivial", "simple", or "of course". Your reader is there because it's not. • Test it. Repeatedly. On multiple systems. • Let your inexperienced co-workers read it.
  • 75. HowTos and Tutorials • Complete - cover even the trivial steps. This is a delicate balance - between deciding what's in scope, and not leaving them to figure out everything on their own
  • 76. Don't mock your customers
  • 77. FAQs • FAQs are often an admission that the documentation is insufficient • Should be a call for improving the docs, or even a scratch-pad for the new docs • Most FAQs should be answered with "here's where that's covered in the docs."
  • 78. Documentation format • The choice of a documentation format can be quite divisive • Choosing wrong can lead to many problems • Of course, there is no right choice, either
  • 79. Format considerations • Easy to edit • Multiple output formats • Translation-friendly • Text (ie, non-binary format) • Revision control
  • 80. Options include • Docbook or other XML • Wikis (Makes translation difficult) • POD (In certain cultures) • JavaDoc (or phpdoc, or rubydoc) • If other projects in the same space have a consistent format, don't try to be clever
  • 81. Searchable • Excellent documentation without a decent search isn't worth anything • There is no excuse for not having a good search. Google will do it for you for free. CC Stéfan, Flickr
  • 82. Encouraging participation • Make it easy for people to complain • Take their complaints seriously • Don't get offended when they tell you the docs suck • Do something about it
  • 83. PHP • PHP does this really well
  • 84. ... but • They're pretty much alone in this
  • 85. Everyone else: • Create an account I just wanted to tell you that you • Get a checkout misspelled • Subscribe to this list "peony" • Create a ticket in Bugzilla • Email a patch • Follow up on that list
  • 86. Git • Half of you are itching to tell me that Git solves this problem • This may in fact be true for certain projects
  • 87. Welcome contributions • Make it obvious how to submit comments, improvements, errata • Don't ignore them once they're submitted • Be quick to offer commit rights to repeat customers
  • 88. Going to the source • The developers (often) don't like writing docs • When they realize you do, they'll be willing to answer your questions
  • 89. Also, the source • Learn to read the source code • It will save you many tears in the long run • However, don't require programming knowledge to participate in the documentation
  • 90. Error messages • Error messages are documentation, too else if (!(status & LP_PERRORP)) { if (last != LP_PERRORP) { last = LP_PERRORP; printk(KERN_INFO "lp%d on firen", minor); } } Linux printer driver, circa 2.2.1
  • 91. How much to say • What should the documentation not cover? • You must decide what things are outside of the scope • Once you cross the line, you'll end up writing books, and down that road lies madness
  • 92. Work for it We have a tendency to want to make them work for the information, either in a mistaken notion that this will make them remember it, or merely because we had to work for it, so they should too Well, in my day, we had to edit the inodes with a bar magnet! Go figure it out yourself, punk! CC by hiro008, flickr
  • 93. Harness the whining cc cindy47452 flickr • Whiners -> Contributors: HARD, but worthwhile • Potential contributors -> Whiners: EASY
  • 94. Your documentation sucks Shut up.You're ugly and your mother dresses you funny. Result:Your documentation still sucks, and you've alienated someone who wanted, albeit misguidedly, to help.
  • 95. Your documentation sucks How do you think we could improve it? Result: Your documentation might get better, and, even if it doesn't, you've told one person that you care what your customers think.
  • 96. Questions? • rbowen@apache.org • http://slideshare.net/rbowen <-- Slides here • http://betterfm.org/ • http://redwoodopen.org/ • http://omniti.com/is/hiring

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n