SlideShare a Scribd company logo
1 of 60
By Tom Johnson 
www.idratherbewriting.com 
October 15, 2014
More 
info 
needed
Presentation by John Musser, founder of programmableweb.com, 
which has directory of 12,000+ APIs
Says, “The client wants to 
find someone who'll emulate 
Dropbox's developer 
documentation”
With APIs, docs are 
the interface
Presentation outline 
Native API 
Docs 
REST API 
Docs 
10 Best 
Practices 
Topics not covered: 
• Writing the technical content 
• Interacting with developers 
• Learning to read code 
• Understanding the different languages 
• Commenting on code samples 
• Creating getting started, hello world tutorials
Some basics about the API landscape 
System B 
System A 
API 
Lots of different types 
of APIs – for example: 
1. Native APIs that you 
download and add 
to your project 
before compiling. 
2. REST APIs that you 
access through 
HTTP web requests.
The tech writer’s responsibility
The concept of auto-doc 
/** 
* Reverses the order of the elements in the specified list.<p> 
* 
* This method runs in linear time. 
* 
* 
* @param list the list whose elements are to be reversed. 
* @throws UnsupportedOperationException if the specified list or 
* its list-iterator does not support the <tt>set</tt> 
operation. 
*/ 
public static void reverse(List<?> list) { 
int size = list.size() 
if (size < REVERSE_THRESHOLD || list instanceof 
RandomAccess) { 
for (int i=0, mid=size>>1, j=size-1; i<mid; 
i++, j--) 
swap(list, i, j); 
} else { 
… 
Add documentation in the 
source code, structuring it with 
specific syntax that a 
documentation generator can 
read.
Auto-doc output 
Javadoc 
Doxygen
Javadoc 
- Commonly used. 
- Works only for Java. 
- Run it from your IDE. 
- Automate into builds. 
- Explore other doclets. 
- Has frame-based - 
output. 
- Can skin with CSS. 
- Looks professional.
Doxygen 
- Commonly used. 
- Works with Java, C++, 
C#, and others. 
- Has easy front-end GUI. 
- Point it at your source 
files. 
- Automate into builds. 
- Can include non-source 
files (Markdown). 
- Frame-based output. 
- Can skin.
Doxygen has GUI front-end 
Specify the 
source directory 
of your files.
Pros of in-source documentation 
- Avoids documentation 
drift 
- Allows the person who 
creates the code (and 
so best understands it) 
to also document it 
- Includes tooltips when 
others incorporate the 
library into their 
projects 
Continental drift 
Doc Src Src 
Doc
Cons of in-source documentation 
1. Subject to Curse of 
Knowledge 
2. Not task-focused 
3. Suffers from lack of 
ownership 
4. Doesn’t integrate with 
other content 
5. Gives illusion of having 
real doc
Problem 1: Curse of Knowledge 
A developer who 
creates the API 
may assume too 
much of the 
audiences’ 
technical ability. 
As a result, the 
descriptions 
aren’t helpful.
Problem 2: Not task-focused 
Auto-doc is feature-based 
doc approach. 
Task-based doc includes 
multiple calls and 
workflows in support of 
goals. It might make use 
of several different 
objects and methods 
across the reference 
doc.
Problem 3: Lack of ownership 
Auto-doc is a 
stray dog. 
Auto-doc is owned 
like a stray dog or wiki 
is owned. Someone 
may contribute some 
food or a page 
without care for the 
whole. Usually there 
isn’t a developer 
overseeing all the 
doc. Tech writers feel 
less responsible when 
auto-doc is a separate 
from their output.
Problem 4: Doesn’t integrate 
Auto-doc doesn’t 
integrate directly into 
a website except as a 
link from your other 
web pages. Like a 
HAT-produced 
webhelp file, the 
auto-doc is its own 
little website.
Problem 5: Gives illusion of real doc 
“… auto-generated 
documentation is worse than 
useless: it lets maintainers fool 
themselves into thinking they 
have documentation, thus 
putting off actually writing good 
reference by hand. If you don’t 
have documentation just admit 
to it. Maybe a volunteer will 
offer to write some! But don’t 
lie and give me that auto-documentation 
crap”. – Jacob 
Kaplan Moss 
Looks real but 
isn’t.
Question: Would 
merging auto-doc 
with regular doc 
help solve 
integration and 
ownership issues?
Merge option 1: Leverage DITA to pull 
source doc into tech comm tools 
You run the Docfacto 
DITA doclet inside 
Eclipse just like 
Javadoc, but you 
select a custom DITA 
Doclet. Files get 
converted to 
reference topic 
types. With Docfacto 
Links, you can add 
links to and from in-source 
files.
Merge option 2: Abandon tech comm 
tools for dev tools that use markdown
“… It reminds me of back in the day when I 
was a photographer. So many of my 
colleagues were wrapped up in the 
technology, they forgot the original purpose 
was to create a photograph. Same with 
document generators. We are debating 
whether it's better to generate docs from 
source comments than an alternative. My 
point is that this debate is a red herring. It's 
not where you put the information, it's the 
quality of the information.” 
– Doug Schwartz
REST API basics 
URLs requests return specific data HTTP Request 
Response
Responses in JSON or XML 
Configuration 
parameters 
Response in JSON format
Response 
Request 
This kind of tutorial 
lives outside the 
reference docs.
cURL calls 
HTTP requests are often demonstrated through 
cURL calls, with different HTTP methods: 
GET – retrieve 
POST – edit 
PUT – create 
DELETE – remove
No auto-doc with REST APIs because 
source language varies so much 
“The beauty of Web APIs is that they can be written in 
whatever language you like and in whatever manner you 
like. As long as when an HTTP request comes in, the proper 
HTTP response goes out, it doesn't matter how it actually 
happens on the server. But this very flexibility makes 
automated documentation nearly impossible, since there's 
no standard mapping between what an API request is and 
what the code is that generates its response.” 
-- Kin Lane, APIevangelist.com
But REST APIs have some endpoint 
generator possibilities, with Swagger 
Generates an endpoint 
based on values you 
enter
And Mashery.io 
This is an API for 
USA Today.
Mashery with Klout 
Doc becomes 
interactive 
when you’re 
signed in.
Miredot (auto-doc for Java REST) 
Source code 
must be Java.
Sample REST API doc sites 
Many API doc sites 
are modern looking 
and awesome. 
Remember, the API 
Doc is the product 
interface, so it has 
to look good.
Programmableweb.com: API Directory 
12,000 + APIs
Constant Contact API 
One seamless website, 
merging all information 
on the same site.
Yelp API Website is 
branded with 
similar branding 
as product.
Dropbox API 
Clean and simple 
look. Minimalist.
Foursquare API 
Often begin with 
Getting Started section, 
providing a sample 
“Hello World” tutorial
Youtube API 
Lots of code samples, 
usually with syntax 
highlighting and 
surrounding narrative
Stripe API 
Code requests 
and responses 
next to doc
Twilio API 
One output, with 
tabs to show 
different 
languages
Get Bootstrap API 
Everything on one 
page, with dynamic 
TOC highlighting as 
you scroll
Single page doc scroll demo
Twitter API 
Real-time 
requests to 
make the doc 
interactive.
Readme.io API authoring tool 
Says, “Start typing 
markdown here…” 
Simple authoring 
methods, usually 
Markdown
Read the Docs 
Sphinx and 
Github
1. Edit on Github. 
2. Commit change. 
3. Rebuild view on 
readthedocs.org.
10 Trends 
1. One seamless website 
2. Product-branding 
3. Minimalism 
4. Getting started section 
5. Emphasis on code samples 
6. Side-by-side code 
7. jQuery tabs 
8. Single-page doc 
9. Real-time requests/demo 
10.Markdown
10 non-trends 
1. PDF output 
2. Collapsible sections 
3. Short pages 
4. Multiple outputs of content for different audiences 
5. DITA or XML authoring models 
6. EPUB and mobile formats 
7. Comments on pages 
8. Wikis 
9. Tripane webhelp files 
10. Video tutorials
Question: How do 
tech writers make 
beautiful API doc 
websites?
Possible options 
Cloud-based solutions 
- Readme.io 
- Miredot 
- Apiary 
- API Blueprint 
- 3scale.net 
- Turnapi 
- Github 
Static site generators 
- Slate 
- Wintersmith 
- Nanoc 
- Jekyll 
- Pico CMS 
- Sphinx 
- Fixie docs 
Doc. generators 
- Enunciate 
- Docco 
- Dexy 
- Swagger 
- Mashery I/O docs 
- RAML 
DITA-based 
- WordPress 
Wikis 
- Mediawiki 
- Ponydocs 
- Confluence
How do you merge worlds? 
Is it possible to 
merge tech comm 
and API doc worlds, 
or are they too 
different?
Import DITA into WordPress (Pros) 
Pros 
- Easy to build and theme a beautiful site. 
- Create a network of sites controlled from a single point. 
- Imports DITA flawlessly. 
- Include additional functionality (e.g., forums, Q&A). 
- Leverage existing plugins (auto-toc, jQuery menus, live 
search). 
- Easily hire out branding and code development. 
- Works with a lot of different systems (30,000 + plugins). 
- Dynamically serve conditional content to users. 
- Allow threaded comments (SME review, user feedback). 
- Include other content outside of doc (mktg., kb articles) 
- Much better analytics (e.g., see search queries on dashbrd)
Import DITA into WordPress (Cons) 
Cons 
- Database model is slower than static files. 
- Import process isn’t a one-click job. 
- Requires MySQL, PHP, and Apache architecture. 
- May be problematic to integrate authentication with 
another system (e.g., Salesforce). 
- Regularly importing static files into a dynamic system may 
be subverting the fundamental design of WordPress. 
- May not be robust enough for massive doc projects.
Tom Johnson 
Idratherbewriting.com 
tom@idratherbewriting.com 
@tomjohnson (Twitter)
Image Credits 
• Slide 2: Mars, once. By Kevin Dooley. http://bit.ly/ZFYI0T 
• Slide 4: 10 Reasons Developers Hate Your API (and what to do about it). By John Musser. 
Slideshare. http://slidesha.re/1pnnDRf 
• Slide 9. Spinning gears. By Brent 2.0. Flickr. http://bit.ly/1DexWM0 
• Slide 10. Lolcat Generator: Can haz posters? http://bighugelabs.com/lolcat.php 
• Slide 11. Code sample pulled from 
http://www.docjar.net/html/api/java/util/Collections.java.html. 
• Slide 16. Continental Drift. Wikipedia. http://en.wikipedia.org/wiki/Continental_drift 
• Slide 17: Biodiversity fail. By Martin Sharma. Flickr. http://bit.ly/1CodnKM 
• Slide 18. The Source of Bad Writing. Wall Street Journal. http://online.wsj.com/articles/the-cause- 
of-bad-writing-1411660188 
• Slide 19. Stray dog. By Jose Javier Perez Arenas. Flickr. http://bit.ly/1wau5NK 
• Slide 22. The false. By Cristopher Cotrell. Flickr. http://bit.ly/1F1et36. Quote from Jacob 
Kaplan Moss here: http://jacobian.org/writing/what-to-write/ 
• Slide 23 and 54. Finger face with question. By Tsahi Levent-Levi. http://bit.ly/1sWdnln 
• Slide 32. Kin Lane, apievangelist.com. http://apievangelist.com/2012/03/08/automated-documentation- 
for-rest-apis/ 
• Slide 37. Catwoman. http://bit.ly/11qDsNU 
• Slide 56. Nasa, new eyes: Butterfly. http://bit.ly/1u7ANzE

More Related Content

What's hot

Another API-Blueprint, RAML and Swagger Comparison
Another API-Blueprint, RAML and Swagger ComparisonAnother API-Blueprint, RAML and Swagger Comparison
Another API-Blueprint, RAML and Swagger ComparisonSmartBear
 
API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?Akana
 
Designing APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecDesigning APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecAdam Paxton
 
Aye, Aye, API - What makes Technical Communicators uneasy about API document...
Aye, Aye, API  - What makes Technical Communicators uneasy about API document...Aye, Aye, API  - What makes Technical Communicators uneasy about API document...
Aye, Aye, API - What makes Technical Communicators uneasy about API document...Ellis Pratt
 
Building APIs with the OpenApi Spec
Building APIs with the OpenApi SpecBuilding APIs with the OpenApi Spec
Building APIs with the OpenApi SpecPedro J. Molina
 
Liferay as a headless platform
Liferay as a headless platform  Liferay as a headless platform
Liferay as a headless platform Jorge Ferrer
 
Why do developers prefer ionic to build progressive web apps
Why do developers prefer ionic to build progressive web apps  Why do developers prefer ionic to build progressive web apps
Why do developers prefer ionic to build progressive web apps Moon Technolabs Pvt. Ltd.
 
API Description Languages
API Description LanguagesAPI Description Languages
API Description LanguagesAkana
 
Laravel 9 is now out – how is an improvement over its predecessors
Laravel 9 is now out – how is an improvement over its predecessorsLaravel 9 is now out – how is an improvement over its predecessors
Laravel 9 is now out – how is an improvement over its predecessorsMoon Technolabs Pvt. Ltd.
 
Building Cross-Platform Mobile Apps
Building Cross-Platform Mobile AppsBuilding Cross-Platform Mobile Apps
Building Cross-Platform Mobile AppsTroy Miles
 
Exposing Salesforce REST Services Using Swagger
Exposing Salesforce REST Services Using SwaggerExposing Salesforce REST Services Using Swagger
Exposing Salesforce REST Services Using SwaggerSalesforce Developers
 
Beautiful REST and JSON APIs - Les Hazlewood
Beautiful REST and JSON APIs - Les HazlewoodBeautiful REST and JSON APIs - Les Hazlewood
Beautiful REST and JSON APIs - Les Hazlewoodjaxconf
 
DevNet 1056 WIT Spark API and Chat Bot Workshop
DevNet 1056 WIT Spark API and Chat Bot WorkshopDevNet 1056 WIT Spark API and Chat Bot Workshop
DevNet 1056 WIT Spark API and Chat Bot WorkshopTessa Mero
 
API Description Languages: Which Is The Right One For Me?
 API Description Languages: Which Is The Right One For Me?  API Description Languages: Which Is The Right One For Me?
API Description Languages: Which Is The Right One For Me? ProgrammableWeb
 
OpenAPI development with Python
OpenAPI development with PythonOpenAPI development with Python
OpenAPI development with PythonTakuro Wada
 
API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...SmartBear
 

What's hot (17)

Another API-Blueprint, RAML and Swagger Comparison
Another API-Blueprint, RAML and Swagger ComparisonAnother API-Blueprint, RAML and Swagger Comparison
Another API-Blueprint, RAML and Swagger Comparison
 
API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?
 
Designing APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecDesigning APIs with OpenAPI Spec
Designing APIs with OpenAPI Spec
 
Aye, Aye, API - What makes Technical Communicators uneasy about API document...
Aye, Aye, API  - What makes Technical Communicators uneasy about API document...Aye, Aye, API  - What makes Technical Communicators uneasy about API document...
Aye, Aye, API - What makes Technical Communicators uneasy about API document...
 
Building APIs with the OpenApi Spec
Building APIs with the OpenApi SpecBuilding APIs with the OpenApi Spec
Building APIs with the OpenApi Spec
 
Mule raml
Mule ramlMule raml
Mule raml
 
Liferay as a headless platform
Liferay as a headless platform  Liferay as a headless platform
Liferay as a headless platform
 
Why do developers prefer ionic to build progressive web apps
Why do developers prefer ionic to build progressive web apps  Why do developers prefer ionic to build progressive web apps
Why do developers prefer ionic to build progressive web apps
 
API Description Languages
API Description LanguagesAPI Description Languages
API Description Languages
 
Laravel 9 is now out – how is an improvement over its predecessors
Laravel 9 is now out – how is an improvement over its predecessorsLaravel 9 is now out – how is an improvement over its predecessors
Laravel 9 is now out – how is an improvement over its predecessors
 
Building Cross-Platform Mobile Apps
Building Cross-Platform Mobile AppsBuilding Cross-Platform Mobile Apps
Building Cross-Platform Mobile Apps
 
Exposing Salesforce REST Services Using Swagger
Exposing Salesforce REST Services Using SwaggerExposing Salesforce REST Services Using Swagger
Exposing Salesforce REST Services Using Swagger
 
Beautiful REST and JSON APIs - Les Hazlewood
Beautiful REST and JSON APIs - Les HazlewoodBeautiful REST and JSON APIs - Les Hazlewood
Beautiful REST and JSON APIs - Les Hazlewood
 
DevNet 1056 WIT Spark API and Chat Bot Workshop
DevNet 1056 WIT Spark API and Chat Bot WorkshopDevNet 1056 WIT Spark API and Chat Bot Workshop
DevNet 1056 WIT Spark API and Chat Bot Workshop
 
API Description Languages: Which Is The Right One For Me?
 API Description Languages: Which Is The Right One For Me?  API Description Languages: Which Is The Right One For Me?
API Description Languages: Which Is The Right One For Me?
 
OpenAPI development with Python
OpenAPI development with PythonOpenAPI development with Python
OpenAPI development with Python
 
API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...
 

Viewers also liked

Sphinx autodoc - automated API documentation (PyCon APAC 2015 in Taiwan)
Sphinx autodoc - automated API documentation (PyCon APAC 2015 in Taiwan)Sphinx autodoc - automated API documentation (PyCon APAC 2015 in Taiwan)
Sphinx autodoc - automated API documentation (PyCon APAC 2015 in Taiwan)Takayuki Shimizukawa
 
The salvation army red kettle run
The salvation army red kettle runThe salvation army red kettle run
The salvation army red kettle runwilliam timperley
 
Experience Design + The Digital Agency (Phizzpop version)
Experience Design + The Digital Agency (Phizzpop version)Experience Design + The Digital Agency (Phizzpop version)
Experience Design + The Digital Agency (Phizzpop version)David Armano
 
анализ рынка приложений в социальных сетях
анализ рынка приложений в социальных сетях анализ рынка приложений в социальных сетях
анализ рынка приложений в социальных сетях Dmitriy Plekhanov
 
7 Tips for Design Teams Collaborating Remotely
7 Tips for Design Teams Collaborating Remotely7 Tips for Design Teams Collaborating Remotely
7 Tips for Design Teams Collaborating RemotelyFramebench
 
Letter to my great-grandfather on his 18th birthday
Letter to my great-grandfather on his 18th birthdayLetter to my great-grandfather on his 18th birthday
Letter to my great-grandfather on his 18th birthdayRoss Mayfield
 
בריאות הציבור
בריאות הציבורבריאות הציבור
בריאות הציבורdannydoron
 
Первая помощь
Первая помощьПервая помощь
Первая помощьelasyschool
 
Xkr072015-myjurnal.ru
Xkr072015-myjurnal.ruXkr072015-myjurnal.ru
Xkr072015-myjurnal.ruVasya Pupkin
 
Votre Entreprise sur Facebook... Pour quoi faire?
Votre Entreprise sur Facebook... Pour quoi faire?Votre Entreprise sur Facebook... Pour quoi faire?
Votre Entreprise sur Facebook... Pour quoi faire?Post Planner
 
梯田上的音符 哈尼
梯田上的音符 哈尼梯田上的音符 哈尼
梯田上的音符 哈尼honan4108
 
Je Suis Charlie
Je Suis CharlieJe Suis Charlie
Je Suis Charlieguimera
 
隨園食單及序補充
隨園食單及序補充隨園食單及序補充
隨園食單及序補充sophiya
 
DigitalShoreditch: The gamification of customer service
DigitalShoreditch: The gamification of customer serviceDigitalShoreditch: The gamification of customer service
DigitalShoreditch: The gamification of customer serviceGuy Stephens | @guy1067
 

Viewers also liked (20)

Sphinx autodoc - automated API documentation (PyCon APAC 2015 in Taiwan)
Sphinx autodoc - automated API documentation (PyCon APAC 2015 in Taiwan)Sphinx autodoc - automated API documentation (PyCon APAC 2015 in Taiwan)
Sphinx autodoc - automated API documentation (PyCon APAC 2015 in Taiwan)
 
The salvation army red kettle run
The salvation army red kettle runThe salvation army red kettle run
The salvation army red kettle run
 
EPA DROE Email 6.30.03
EPA DROE Email 6.30.03EPA DROE Email 6.30.03
EPA DROE Email 6.30.03
 
Experience Design + The Digital Agency (Phizzpop version)
Experience Design + The Digital Agency (Phizzpop version)Experience Design + The Digital Agency (Phizzpop version)
Experience Design + The Digital Agency (Phizzpop version)
 
анализ рынка приложений в социальных сетях
анализ рынка приложений в социальных сетях анализ рынка приложений в социальных сетях
анализ рынка приложений в социальных сетях
 
7 Tips for Design Teams Collaborating Remotely
7 Tips for Design Teams Collaborating Remotely7 Tips for Design Teams Collaborating Remotely
7 Tips for Design Teams Collaborating Remotely
 
Zaragoza turismo 237
Zaragoza turismo 237Zaragoza turismo 237
Zaragoza turismo 237
 
Letter to my great-grandfather on his 18th birthday
Letter to my great-grandfather on his 18th birthdayLetter to my great-grandfather on his 18th birthday
Letter to my great-grandfather on his 18th birthday
 
quality control of food and drugs
quality control of food and drugsquality control of food and drugs
quality control of food and drugs
 
בריאות הציבור
בריאות הציבורבריאות הציבור
בריאות הציבור
 
Zaragoza turismo-60
Zaragoza turismo-60Zaragoza turismo-60
Zaragoza turismo-60
 
Zaragoza turismo 215
Zaragoza turismo 215Zaragoza turismo 215
Zaragoza turismo 215
 
Zaragoza turismo 211
Zaragoza turismo 211Zaragoza turismo 211
Zaragoza turismo 211
 
Первая помощь
Первая помощьПервая помощь
Первая помощь
 
Xkr072015-myjurnal.ru
Xkr072015-myjurnal.ruXkr072015-myjurnal.ru
Xkr072015-myjurnal.ru
 
Votre Entreprise sur Facebook... Pour quoi faire?
Votre Entreprise sur Facebook... Pour quoi faire?Votre Entreprise sur Facebook... Pour quoi faire?
Votre Entreprise sur Facebook... Pour quoi faire?
 
梯田上的音符 哈尼
梯田上的音符 哈尼梯田上的音符 哈尼
梯田上的音符 哈尼
 
Je Suis Charlie
Je Suis CharlieJe Suis Charlie
Je Suis Charlie
 
隨園食單及序補充
隨園食單及序補充隨園食單及序補充
隨園食單及序補充
 
DigitalShoreditch: The gamification of customer service
DigitalShoreditch: The gamification of customer serviceDigitalShoreditch: The gamification of customer service
DigitalShoreditch: The gamification of customer service
 

Similar to Publishing strategies for API documentation

Survival Strategies for API Documentation: Presentation to Southwestern Ontar...
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...Survival Strategies for API Documentation: Presentation to Southwestern Ontar...
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...Tom Johnson
 
Creating and Maintaining an Open Source Library
Creating and Maintaining an Open Source LibraryCreating and Maintaining an Open Source Library
Creating and Maintaining an Open Source LibraryNicholas Schweitzer
 
API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)Tom Johnson
 
Drupal is not your Website
Drupal is not your Website Drupal is not your Website
Drupal is not your Website Phase2
 
API Documentation presentation to East Bay STC Chapter
API Documentation presentation to East Bay STC ChapterAPI Documentation presentation to East Bay STC Chapter
API Documentation presentation to East Bay STC ChapterTom Johnson
 
Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018Den Delimarsky
 
UVA MDST 3703 JavaScript (ii) 2012-10-04
UVA MDST 3703 JavaScript (ii) 2012-10-04UVA MDST 3703 JavaScript (ii) 2012-10-04
UVA MDST 3703 JavaScript (ii) 2012-10-04Rafael Alvarado
 
The Guide to becoming a full stack developer in 2018
The Guide to becoming a full stack developer in 2018The Guide to becoming a full stack developer in 2018
The Guide to becoming a full stack developer in 2018Amit Ashwini
 
UVA MDST 3703 JavaScript 2012-09-27
UVA MDST 3703 JavaScript 2012-09-27UVA MDST 3703 JavaScript 2012-09-27
UVA MDST 3703 JavaScript 2012-09-27Rafael Alvarado
 
Company Visitor Management System Report.docx
Company Visitor Management System Report.docxCompany Visitor Management System Report.docx
Company Visitor Management System Report.docxfantabulous2024
 
Docs as-code-missing.-manual
Docs as-code-missing.-manualDocs as-code-missing.-manual
Docs as-code-missing.-manualMargaret Eker
 
Managing Phone Dev Projects
Managing Phone Dev ProjectsManaging Phone Dev Projects
Managing Phone Dev ProjectsJohn McKerrell
 
2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar SlidesDuraSpace
 
Presentation 1 Web--dev
Presentation 1 Web--devPresentation 1 Web--dev
Presentation 1 Web--devaltsav
 
PHP is the King, nodejs is the Prince and Lua is the fool
PHP is the King, nodejs is the Prince and Lua is the foolPHP is the King, nodejs is the Prince and Lua is the fool
PHP is the King, nodejs is the Prince and Lua is the foolAlessandro Cinelli (cirpo)
 
Nt1310 Final Exam Questions And Answers
Nt1310 Final Exam Questions And AnswersNt1310 Final Exam Questions And Answers
Nt1310 Final Exam Questions And AnswersLisa Williams
 

Similar to Publishing strategies for API documentation (20)

Survival Strategies for API Documentation: Presentation to Southwestern Ontar...
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...Survival Strategies for API Documentation: Presentation to Southwestern Ontar...
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...
 
Creating and Maintaining an Open Source Library
Creating and Maintaining an Open Source LibraryCreating and Maintaining an Open Source Library
Creating and Maintaining an Open Source Library
 
API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)
 
Drupal is not your Website
Drupal is not your Website Drupal is not your Website
Drupal is not your Website
 
API Documentation presentation to East Bay STC Chapter
API Documentation presentation to East Bay STC ChapterAPI Documentation presentation to East Bay STC Chapter
API Documentation presentation to East Bay STC Chapter
 
Codeigniter
CodeigniterCodeigniter
Codeigniter
 
Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018
 
UVA MDST 3703 JavaScript (ii) 2012-10-04
UVA MDST 3703 JavaScript (ii) 2012-10-04UVA MDST 3703 JavaScript (ii) 2012-10-04
UVA MDST 3703 JavaScript (ii) 2012-10-04
 
The Guide to becoming a full stack developer in 2018
The Guide to becoming a full stack developer in 2018The Guide to becoming a full stack developer in 2018
The Guide to becoming a full stack developer in 2018
 
Javascript mynotes
Javascript mynotesJavascript mynotes
Javascript mynotes
 
UVA MDST 3703 JavaScript 2012-09-27
UVA MDST 3703 JavaScript 2012-09-27UVA MDST 3703 JavaScript 2012-09-27
UVA MDST 3703 JavaScript 2012-09-27
 
Company Visitor Management System Report.docx
Company Visitor Management System Report.docxCompany Visitor Management System Report.docx
Company Visitor Management System Report.docx
 
Docs as-code-missing.-manual
Docs as-code-missing.-manualDocs as-code-missing.-manual
Docs as-code-missing.-manual
 
Managing Phone Dev Projects
Managing Phone Dev ProjectsManaging Phone Dev Projects
Managing Phone Dev Projects
 
CouchDB
CouchDBCouchDB
CouchDB
 
Tech talk php_cms
Tech talk php_cmsTech talk php_cms
Tech talk php_cms
 
2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides
 
Presentation 1 Web--dev
Presentation 1 Web--devPresentation 1 Web--dev
Presentation 1 Web--dev
 
PHP is the King, nodejs is the Prince and Lua is the fool
PHP is the King, nodejs is the Prince and Lua is the foolPHP is the King, nodejs is the Prince and Lua is the fool
PHP is the King, nodejs is the Prince and Lua is the fool
 
Nt1310 Final Exam Questions And Answers
Nt1310 Final Exam Questions And AnswersNt1310 Final Exam Questions And Answers
Nt1310 Final Exam Questions And Answers
 

More from Tom Johnson

API workshop: Deep dive into Java
API workshop: Deep dive into JavaAPI workshop: Deep dive into Java
API workshop: Deep dive into JavaTom Johnson
 
API Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIsAPI Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIsTom Johnson
 
API Workshop: Deep dive into code samples
API Workshop: Deep dive into code samplesAPI Workshop: Deep dive into code samples
API Workshop: Deep dive into code samplesTom Johnson
 
Perfecting the audio narration in instructional video
Perfecting the audio narration in instructional videoPerfecting the audio narration in instructional video
Perfecting the audio narration in instructional videoTom Johnson
 
Writing code samples for API/SDK documentation
Writing code samples for API/SDK documentationWriting code samples for API/SDK documentation
Writing code samples for API/SDK documentationTom Johnson
 
Why users can't find answers in help material -- STC Sacramento presentation
Why users can't find answers in help material -- STC Sacramento presentationWhy users can't find answers in help material -- STC Sacramento presentation
Why users can't find answers in help material -- STC Sacramento presentationTom Johnson
 
Why users can't find answers in help material
Why users can't find answers in help materialWhy users can't find answers in help material
Why users can't find answers in help materialTom Johnson
 
Make Your Content More Findable When Users Browse and Search
Make Your Content More Findable When Users Browse and SearchMake Your Content More Findable When Users Browse and Search
Make Your Content More Findable When Users Browse and SearchTom Johnson
 
Producing Professional Sounding Audio in Video Tutorials
Producing Professional Sounding Audio in Video TutorialsProducing Professional Sounding Audio in Video Tutorials
Producing Professional Sounding Audio in Video TutorialsTom Johnson
 

More from Tom Johnson (9)

API workshop: Deep dive into Java
API workshop: Deep dive into JavaAPI workshop: Deep dive into Java
API workshop: Deep dive into Java
 
API Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIsAPI Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIs
 
API Workshop: Deep dive into code samples
API Workshop: Deep dive into code samplesAPI Workshop: Deep dive into code samples
API Workshop: Deep dive into code samples
 
Perfecting the audio narration in instructional video
Perfecting the audio narration in instructional videoPerfecting the audio narration in instructional video
Perfecting the audio narration in instructional video
 
Writing code samples for API/SDK documentation
Writing code samples for API/SDK documentationWriting code samples for API/SDK documentation
Writing code samples for API/SDK documentation
 
Why users can't find answers in help material -- STC Sacramento presentation
Why users can't find answers in help material -- STC Sacramento presentationWhy users can't find answers in help material -- STC Sacramento presentation
Why users can't find answers in help material -- STC Sacramento presentation
 
Why users can't find answers in help material
Why users can't find answers in help materialWhy users can't find answers in help material
Why users can't find answers in help material
 
Make Your Content More Findable When Users Browse and Search
Make Your Content More Findable When Users Browse and SearchMake Your Content More Findable When Users Browse and Search
Make Your Content More Findable When Users Browse and Search
 
Producing Professional Sounding Audio in Video Tutorials
Producing Professional Sounding Audio in Video TutorialsProducing Professional Sounding Audio in Video Tutorials
Producing Professional Sounding Audio in Video Tutorials
 

Recently uploaded

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 

Recently uploaded (20)

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 

Publishing strategies for API documentation

  • 1. By Tom Johnson www.idratherbewriting.com October 15, 2014
  • 2.
  • 4. Presentation by John Musser, founder of programmableweb.com, which has directory of 12,000+ APIs
  • 5. Says, “The client wants to find someone who'll emulate Dropbox's developer documentation”
  • 6. With APIs, docs are the interface
  • 7. Presentation outline Native API Docs REST API Docs 10 Best Practices Topics not covered: • Writing the technical content • Interacting with developers • Learning to read code • Understanding the different languages • Commenting on code samples • Creating getting started, hello world tutorials
  • 8.
  • 9. Some basics about the API landscape System B System A API Lots of different types of APIs – for example: 1. Native APIs that you download and add to your project before compiling. 2. REST APIs that you access through HTTP web requests.
  • 10. The tech writer’s responsibility
  • 11. The concept of auto-doc /** * Reverses the order of the elements in the specified list.<p> * * This method runs in linear time. * * * @param list the list whose elements are to be reversed. * @throws UnsupportedOperationException if the specified list or * its list-iterator does not support the <tt>set</tt> operation. */ public static void reverse(List<?> list) { int size = list.size() if (size < REVERSE_THRESHOLD || list instanceof RandomAccess) { for (int i=0, mid=size>>1, j=size-1; i<mid; i++, j--) swap(list, i, j); } else { … Add documentation in the source code, structuring it with specific syntax that a documentation generator can read.
  • 13. Javadoc - Commonly used. - Works only for Java. - Run it from your IDE. - Automate into builds. - Explore other doclets. - Has frame-based - output. - Can skin with CSS. - Looks professional.
  • 14. Doxygen - Commonly used. - Works with Java, C++, C#, and others. - Has easy front-end GUI. - Point it at your source files. - Automate into builds. - Can include non-source files (Markdown). - Frame-based output. - Can skin.
  • 15. Doxygen has GUI front-end Specify the source directory of your files.
  • 16. Pros of in-source documentation - Avoids documentation drift - Allows the person who creates the code (and so best understands it) to also document it - Includes tooltips when others incorporate the library into their projects Continental drift Doc Src Src Doc
  • 17. Cons of in-source documentation 1. Subject to Curse of Knowledge 2. Not task-focused 3. Suffers from lack of ownership 4. Doesn’t integrate with other content 5. Gives illusion of having real doc
  • 18. Problem 1: Curse of Knowledge A developer who creates the API may assume too much of the audiences’ technical ability. As a result, the descriptions aren’t helpful.
  • 19. Problem 2: Not task-focused Auto-doc is feature-based doc approach. Task-based doc includes multiple calls and workflows in support of goals. It might make use of several different objects and methods across the reference doc.
  • 20. Problem 3: Lack of ownership Auto-doc is a stray dog. Auto-doc is owned like a stray dog or wiki is owned. Someone may contribute some food or a page without care for the whole. Usually there isn’t a developer overseeing all the doc. Tech writers feel less responsible when auto-doc is a separate from their output.
  • 21. Problem 4: Doesn’t integrate Auto-doc doesn’t integrate directly into a website except as a link from your other web pages. Like a HAT-produced webhelp file, the auto-doc is its own little website.
  • 22. Problem 5: Gives illusion of real doc “… auto-generated documentation is worse than useless: it lets maintainers fool themselves into thinking they have documentation, thus putting off actually writing good reference by hand. If you don’t have documentation just admit to it. Maybe a volunteer will offer to write some! But don’t lie and give me that auto-documentation crap”. – Jacob Kaplan Moss Looks real but isn’t.
  • 23. Question: Would merging auto-doc with regular doc help solve integration and ownership issues?
  • 24. Merge option 1: Leverage DITA to pull source doc into tech comm tools You run the Docfacto DITA doclet inside Eclipse just like Javadoc, but you select a custom DITA Doclet. Files get converted to reference topic types. With Docfacto Links, you can add links to and from in-source files.
  • 25. Merge option 2: Abandon tech comm tools for dev tools that use markdown
  • 26. “… It reminds me of back in the day when I was a photographer. So many of my colleagues were wrapped up in the technology, they forgot the original purpose was to create a photograph. Same with document generators. We are debating whether it's better to generate docs from source comments than an alternative. My point is that this debate is a red herring. It's not where you put the information, it's the quality of the information.” – Doug Schwartz
  • 27.
  • 28. REST API basics URLs requests return specific data HTTP Request Response
  • 29. Responses in JSON or XML Configuration parameters Response in JSON format
  • 30. Response Request This kind of tutorial lives outside the reference docs.
  • 31. cURL calls HTTP requests are often demonstrated through cURL calls, with different HTTP methods: GET – retrieve POST – edit PUT – create DELETE – remove
  • 32. No auto-doc with REST APIs because source language varies so much “The beauty of Web APIs is that they can be written in whatever language you like and in whatever manner you like. As long as when an HTTP request comes in, the proper HTTP response goes out, it doesn't matter how it actually happens on the server. But this very flexibility makes automated documentation nearly impossible, since there's no standard mapping between what an API request is and what the code is that generates its response.” -- Kin Lane, APIevangelist.com
  • 33. But REST APIs have some endpoint generator possibilities, with Swagger Generates an endpoint based on values you enter
  • 34. And Mashery.io This is an API for USA Today.
  • 35. Mashery with Klout Doc becomes interactive when you’re signed in.
  • 36. Miredot (auto-doc for Java REST) Source code must be Java.
  • 37. Sample REST API doc sites Many API doc sites are modern looking and awesome. Remember, the API Doc is the product interface, so it has to look good.
  • 39. Constant Contact API One seamless website, merging all information on the same site.
  • 40. Yelp API Website is branded with similar branding as product.
  • 41. Dropbox API Clean and simple look. Minimalist.
  • 42. Foursquare API Often begin with Getting Started section, providing a sample “Hello World” tutorial
  • 43. Youtube API Lots of code samples, usually with syntax highlighting and surrounding narrative
  • 44. Stripe API Code requests and responses next to doc
  • 45. Twilio API One output, with tabs to show different languages
  • 46. Get Bootstrap API Everything on one page, with dynamic TOC highlighting as you scroll
  • 47. Single page doc scroll demo
  • 48. Twitter API Real-time requests to make the doc interactive.
  • 49. Readme.io API authoring tool Says, “Start typing markdown here…” Simple authoring methods, usually Markdown
  • 50. Read the Docs Sphinx and Github
  • 51. 1. Edit on Github. 2. Commit change. 3. Rebuild view on readthedocs.org.
  • 52. 10 Trends 1. One seamless website 2. Product-branding 3. Minimalism 4. Getting started section 5. Emphasis on code samples 6. Side-by-side code 7. jQuery tabs 8. Single-page doc 9. Real-time requests/demo 10.Markdown
  • 53. 10 non-trends 1. PDF output 2. Collapsible sections 3. Short pages 4. Multiple outputs of content for different audiences 5. DITA or XML authoring models 6. EPUB and mobile formats 7. Comments on pages 8. Wikis 9. Tripane webhelp files 10. Video tutorials
  • 54. Question: How do tech writers make beautiful API doc websites?
  • 55. Possible options Cloud-based solutions - Readme.io - Miredot - Apiary - API Blueprint - 3scale.net - Turnapi - Github Static site generators - Slate - Wintersmith - Nanoc - Jekyll - Pico CMS - Sphinx - Fixie docs Doc. generators - Enunciate - Docco - Dexy - Swagger - Mashery I/O docs - RAML DITA-based - WordPress Wikis - Mediawiki - Ponydocs - Confluence
  • 56. How do you merge worlds? Is it possible to merge tech comm and API doc worlds, or are they too different?
  • 57. Import DITA into WordPress (Pros) Pros - Easy to build and theme a beautiful site. - Create a network of sites controlled from a single point. - Imports DITA flawlessly. - Include additional functionality (e.g., forums, Q&A). - Leverage existing plugins (auto-toc, jQuery menus, live search). - Easily hire out branding and code development. - Works with a lot of different systems (30,000 + plugins). - Dynamically serve conditional content to users. - Allow threaded comments (SME review, user feedback). - Include other content outside of doc (mktg., kb articles) - Much better analytics (e.g., see search queries on dashbrd)
  • 58. Import DITA into WordPress (Cons) Cons - Database model is slower than static files. - Import process isn’t a one-click job. - Requires MySQL, PHP, and Apache architecture. - May be problematic to integrate authentication with another system (e.g., Salesforce). - Regularly importing static files into a dynamic system may be subverting the fundamental design of WordPress. - May not be robust enough for massive doc projects.
  • 59. Tom Johnson Idratherbewriting.com tom@idratherbewriting.com @tomjohnson (Twitter)
  • 60. Image Credits • Slide 2: Mars, once. By Kevin Dooley. http://bit.ly/ZFYI0T • Slide 4: 10 Reasons Developers Hate Your API (and what to do about it). By John Musser. Slideshare. http://slidesha.re/1pnnDRf • Slide 9. Spinning gears. By Brent 2.0. Flickr. http://bit.ly/1DexWM0 • Slide 10. Lolcat Generator: Can haz posters? http://bighugelabs.com/lolcat.php • Slide 11. Code sample pulled from http://www.docjar.net/html/api/java/util/Collections.java.html. • Slide 16. Continental Drift. Wikipedia. http://en.wikipedia.org/wiki/Continental_drift • Slide 17: Biodiversity fail. By Martin Sharma. Flickr. http://bit.ly/1CodnKM • Slide 18. The Source of Bad Writing. Wall Street Journal. http://online.wsj.com/articles/the-cause- of-bad-writing-1411660188 • Slide 19. Stray dog. By Jose Javier Perez Arenas. Flickr. http://bit.ly/1wau5NK • Slide 22. The false. By Cristopher Cotrell. Flickr. http://bit.ly/1F1et36. Quote from Jacob Kaplan Moss here: http://jacobian.org/writing/what-to-write/ • Slide 23 and 54. Finger face with question. By Tsahi Levent-Levi. http://bit.ly/1sWdnln • Slide 32. Kin Lane, apievangelist.com. http://apievangelist.com/2012/03/08/automated-documentation- for-rest-apis/ • Slide 37. Catwoman. http://bit.ly/11qDsNU • Slide 56. Nasa, new eyes: Butterfly. http://bit.ly/1u7ANzE

Editor's Notes

  1. ttp://www.slideshare.net/jmusser/ten-reasons-developershateyourapi
  2. Source code: http://www.docjar.net/html/api/java/util/Collections.java.html
  3. http://online.wsj.com/articles/the-cause-of-bad-writing-1411660188
  4. Another source: “Auto-generated documentation that documents each API end-point directly from source code have their place (e.g., its great for team that built the API and its great for a reference document) but hand-crafted quality documentation that walks you through a use case for the API is invaluable. It should tell you about the key end-points that are needed for solving a particular problem and it should provide you with code samples.” https://communities.cisco.com/community/developer/blog/2014/09/03/introducing-devnet-slate
  5. Also enunciate http://enunciate.codehaus.org/ and https://github.com/mashery/iodocs
  6. http://developer.usatoday.com/io-docs
  7. http://developer.klout.com/io-docs
  8. https://developer.foursquare.com/start
  9. https://developers.google.com/youtube/v3/code_samples/apps-script
  10. Also http://ricostacruz.com/jquery.transit/source/ for docco sidebar style Slate patterned after it, and docco
  11. http://www.twilio.com/docs/api/rest/conference
  12. Article by bokardo: clicking is easier than scrolling: http://bokardo.com/archives/scrolling-easier-clicking/
  13. https://dev.twitter.com/rest/reference/get/statuses/user_timeline
  14. Splunk’s documentation is an exception to the non-wiki trend.
  15. http://blog.iwantmyname.com/2014/05/the-updated-big-list-of-static-website-generators-for-your-site-blog-or-wiki.html https://github.com/skx/static-site-generators/blob/master/README.md http://lwn.net/Articles/541299/