Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Jonathan Reinink I live in Canada. I have been writing PHP for 18 years. I spent a decade at marketing agency. I am now a contract developer.

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

I love documentation.

Slide 5

Slide 5 text

I enjoy the branding and marketing aspect of documentation.

Slide 6

Slide 6 text

I enjoy the teaching aspect of documentation.

Slide 7

Slide 7 text

I enjoy the learning aspect to documentation.

Slide 8

Slide 8 text

Good docs are vital to the success of libraries, frameworks, languages and technical services.

Slide 9

Slide 9 text

Developers will give something the time of day, if it's clear you have.

Slide 10

Slide 10 text

Myths of documentation.

Slide 11

Slide 11 text

Documentation myth #1: "Read the code" is an acceptable answer to "Where are the docs?"

Slide 12

Slide 12 text

"Auto-generated API docs are good enough.” Documentation myth #2:

Slide 13

Slide 13 text

— Jacob Kaplan-Moss
 (Core contributor to Django) “Auto-generated documentation is almost worthless. At best it’s a slightly improved version of simply browsing through the source …there’s no substitute for documentation written, organized, and edited by hand.”

Slide 14

Slide 14 text

Documentation myth #3: "All you need a README file.”

Slide 15

Slide 15 text

"Documentation should be easy.” Documentation myth #4:

Slide 16

Slide 16 text

“Tests are hard so we practice to get better. Docs are hard… so we don't write any and complain.” Steve Klabnik, Senior Technical Writer (Maintainer of the official Rust documentation)

Slide 17

Slide 17 text

“The difference between excellent docs and adequate docs is massive, and takes a lot of work. But going from bad docs to adequate docs is totally achievable.” Steve Klabnik, Senior Technical Writer (Maintainer of the official Rust documentation)

Slide 18

Slide 18 text

The purpose of documentation.

Slide 19

Slide 19 text

“The purpose of technical documentation is to take someone who has never seen your project, teach them to be an expert user of it, and support them once they become an expert.” — Steve Losh

Slide 20

Slide 20 text

“The purpose of technical documentation is to take someone who has never seen your project, teach them to be an expert user of it, and support them once they become an expert.” — Steve Losh

Slide 21

Slide 21 text

Must read article: Teach, Don't Tell stevelosh.com/blog/2013/09/teach-dont-tell/ By Steve Losh

Slide 22

Slide 22 text

The Anatomy of Good Documentation 1. The pitch 2. The example 3. The guides 4. The reference

Slide 23

Slide 23 text

1. The pitch

Slide 24

Slide 24 text

The elevator speech.

Slide 25

Slide 25 text

Will it save me time? Will it take more time, but be more stable in exchange? Does it offer some special features I can’t live without? Is it just plain more fun?

Slide 26

Slide 26 text

For bonus points, you can also mention why someone might want to not use your project.

Slide 27

Slide 27 text

“This package is a port from the Ruby X package.” Not acceptable:

Slide 28

Slide 28 text

What license the project uses. Where the bug tracker is. Who the author is. Where the source code is. How many times it’s been downloaded.

Slide 29

Slide 29 text

2. The minimum viable example

Slide 30

Slide 30 text

The minimum viable example lets your prospective user get some paint on the canvas.

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

3. The guides

Slide 34

Slide 34 text

Have a guide for every topic that you feel needs to be covered.

Slide 35

Slide 35 text

Don’t be afraid to write.

Slide 36

Slide 36 text

You should have a table of contents that lists each section of the guides.

Slide 37

Slide 37 text

Be liberal with your use of sub titles.

Slide 38

Slide 38 text

Include lots of examples.

Slide 39

Slide 39 text

4. The reference

Slide 40

Slide 40 text

Keep a change log.

Slide 41

Slide 41 text

Show notable changes that have been made between releases.

Slide 42

Slide 42 text

Consider following the Keep a CHANGELOG format, see keepachangelog.com.

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

{% for release in site.github.releases %} ## [{{ release.name }}]({{ release.html_url }}) - {{ release.published_at | date: "%Y-%m-%d" }} {{ release.body | markdownify }} {% endfor %}

Slide 45

Slide 45 text

Make sure your API docs are actually useful.

Slide 46

Slide 46 text

Welcome contributions.

Slide 47

Slide 47 text

Putting it all together.

Slide 48

Slide 48 text

The ideal layout.

Slide 49

Slide 49 text

Project Name your tagline goes here Topic Page name Page name Page name Page name Topic Page name Page name Page name Page name Topic Page name Page name Page name Page name Page name Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut Sub title Search… 1.0.0

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

No content

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

No content

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

Project Name your tagline goes here Topic Page name Page name Page name Page name Topic Page name Page name Page name Page name Topic Page name Page name Page name Page name Page name Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut Sub title Search… 1.0.0

Slide 64

Slide 64 text

The design of your docs matters.

Slide 65

Slide 65 text

Choose a better font. Museo Sans Open Sans Source Sans Pro Droid Sans

Slide 66

Slide 66 text

Use a nice colour scheme.

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

Give content space.

Slide 69

Slide 69 text

Use syntax highlighting.

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

Consider adding a search functionality.

Slide 72

Slide 72 text

No content

Slide 73

Slide 73 text

No content

Slide 74

Slide 74 text

Include a link where corrections can be submitted.

Slide 75

Slide 75 text

Install Google Analytics to see what content people are most interested in.

Slide 76

Slide 76 text

Don’t get hung up on the tooling.

Slide 77

Slide 77 text

Go forth and make awesome docs!

Slide 78

Slide 78 text

Thanks! Follow me on Twitter at @reinink. Please rate this talk at joind.in/talk/9a9dc.