The document discusses best practices for documentation in open source projects. It notes that documentation is often neglected in open source. It provides counter examples like the PHP documentation, which is successful due to having an organized documentation team, smart formatting decisions, and welcoming contributions. The document argues that documentation is a priority that deserves resources. It also argues that many people want to contribute to documentation but barriers are often too high. Questions to consider for documentation include appropriate scope and intended audiences. Examples, reference manuals, and being respectful to askers are discussed as part of providing good documentation.
Selfish Accessibility — WordCamp Europe 2017Adrian Roselli
We can all pretend that we’re helping others by making web sites and software accessible, but we are really making them better for our future selves. Learn some fundamentals of accessibility and how it can benefit you (whether future you from aging or you after something else limits your abilities). We’ll review simple testing techniques, basic features and enhancements, coming trends, and where to get help. This isn’t intended to be a deep dive, but more of an overall primer for those who aren’t sure where to start nor how it helps them.
Prototyping Accessibility - WordCamp Europe 2018Adrian Roselli
Learn some fundamentals of accessibility and how it can benefit you (whether future you from aging or you after something else limits your abilities). We’ll review differing abilities, generate (minimal) user stories and personas, discuss best practices for design and development, prototype some ideas (on paper), and discuss where to get help. This isn’t intended to be a deep dive into technologies, but more of an overall primer for those who aren’t sure where to start with accessibility nor how it helps them.
I gave this talk on IEEE Day (October 7, 2014). I covered Introduction to Open Source, Various Projects and Products in Open Source, What students can get from Open Source and various different aspects of Open Source during this talk.
Please feel free to download, modify and use the slides for your talks. Lets keep rocking the Free Web ! :)
Selfish Accessibility — WordCamp Europe 2017Adrian Roselli
We can all pretend that we’re helping others by making web sites and software accessible, but we are really making them better for our future selves. Learn some fundamentals of accessibility and how it can benefit you (whether future you from aging or you after something else limits your abilities). We’ll review simple testing techniques, basic features and enhancements, coming trends, and where to get help. This isn’t intended to be a deep dive, but more of an overall primer for those who aren’t sure where to start nor how it helps them.
Prototyping Accessibility - WordCamp Europe 2018Adrian Roselli
Learn some fundamentals of accessibility and how it can benefit you (whether future you from aging or you after something else limits your abilities). We’ll review differing abilities, generate (minimal) user stories and personas, discuss best practices for design and development, prototype some ideas (on paper), and discuss where to get help. This isn’t intended to be a deep dive into technologies, but more of an overall primer for those who aren’t sure where to start with accessibility nor how it helps them.
I gave this talk on IEEE Day (October 7, 2014). I covered Introduction to Open Source, Various Projects and Products in Open Source, What students can get from Open Source and various different aspects of Open Source during this talk.
Please feel free to download, modify and use the slides for your talks. Lets keep rocking the Free Web ! :)
Selfish Accessibility: WordCamp London 2017Adrian Roselli
We can all pretend that we’re helping others by making web sites and software accessible, but we are really making them better for our future selves. Learn some fundamentals of accessibility and how it can benefit you (whether future you from aging or you after something else limits your abilities). We’ll review simple testing techniques, basic features and enhancements, coming trends, and where to get help. This isn’t intended to be a deep dive, but more of an overall primer for those who aren’t sure where to start nor how it helps them.
Guelph A11y Conf: Everything I Know About Accessibility I Learned from Stack ...Adrian Roselli
Accessibility practitioners tend to live in a bubble, taking for granted many of the basics with which developers struggle. Explore questions developers ask one another.
We can all pretend that we’re helping others by making web sites and software accessible, but we are really making them better for our future selves. Learn some fundamentals of accessibility and how it can benefit you (whether future you from aging or you after something else limits your abilities). We’ll review simple testing techniques, basic features and enhancements, coming trends, and where to get help. This isn’t intended to be a deep dive, but more of an overall primer for those who aren’t sure where to start nor how it helps them.
We can pretend that we’re helping others by making websites and software accessible, but we are really making them better for our future selves. Learn some fundamentals of accessibility and how it can benefit you (whether future you from ageing or you after something else limits your abilities).
We’ll review simple testing techniques, basic features and enhancements, coming trends, and where to get help. This is an overall primer for those who aren’t sure where to start nor how it helps them.
Running a Successful Open Source ProjectRob Reynolds
So you are interested in having your own open source (FOSS or FLOSS) project or you are currently managing your own. You want to see more use of your project in the community and you want to see it grow. Running a successful open source project or really any community project in general takes several key ingredients. Join Rob while he teaches what he has learned from running two successful projects and working on another.
Selfish Accessibility: WordCamp London 2017Adrian Roselli
We can all pretend that we’re helping others by making web sites and software accessible, but we are really making them better for our future selves. Learn some fundamentals of accessibility and how it can benefit you (whether future you from aging or you after something else limits your abilities). We’ll review simple testing techniques, basic features and enhancements, coming trends, and where to get help. This isn’t intended to be a deep dive, but more of an overall primer for those who aren’t sure where to start nor how it helps them.
Guelph A11y Conf: Everything I Know About Accessibility I Learned from Stack ...Adrian Roselli
Accessibility practitioners tend to live in a bubble, taking for granted many of the basics with which developers struggle. Explore questions developers ask one another.
We can all pretend that we’re helping others by making web sites and software accessible, but we are really making them better for our future selves. Learn some fundamentals of accessibility and how it can benefit you (whether future you from aging or you after something else limits your abilities). We’ll review simple testing techniques, basic features and enhancements, coming trends, and where to get help. This isn’t intended to be a deep dive, but more of an overall primer for those who aren’t sure where to start nor how it helps them.
We can pretend that we’re helping others by making websites and software accessible, but we are really making them better for our future selves. Learn some fundamentals of accessibility and how it can benefit you (whether future you from ageing or you after something else limits your abilities).
We’ll review simple testing techniques, basic features and enhancements, coming trends, and where to get help. This is an overall primer for those who aren’t sure where to start nor how it helps them.
Running a Successful Open Source ProjectRob Reynolds
So you are interested in having your own open source (FOSS or FLOSS) project or you are currently managing your own. You want to see more use of your project in the community and you want to see it grow. Running a successful open source project or really any community project in general takes several key ingredients. Join Rob while he teaches what he has learned from running two successful projects and working on another.
A talk delivered by Liz McCarthy at the Anybook Oxford Libraries Conference 2015 - Adapting for the Future: Developing Our Professions and Services, 21st July 2015
What every successful open source project needsSteven Francia
In the last few years open source has transformed the software industry. From Android to Wikipedia, open source is everywhere, but how does one succeed in it? While open source projects come in all shapes and sizes and all forms of governance, no matter what kind of project you’re a part of, there are a set of fundamentals that lead to success. I’d like to share some of the lessons I’ve learned from running two of the largest commercial open source projects, Docker and MongoDB, as well as some very successful community projects.
This presentation was delievered at sinfo.org in Feb 2015.
"How do you think when you're coding?", Jon SkeetFwdays
Software engineers spend a lot of time "in a code environment" for various reasons (along with time writing design documents etc, of course). How much attention do you pay do how you spend this time?
Do you think and act the same way when diagnosing a problem as when fixing it? How about when you're writing a prototype vs when you're writing a production feature? Does hobby coding feel like professional coding? In this talk, Jon will reflect on how he thinks when coding – not as a directive for you to do the same thing, but as an example of how you might think about coding, encouraging you to reflect on your own practices. What works really well? Which practices are "nice to have" and which ones are crucial, leading to real problems if you ignore them? Expect to have more questions than answers by the end of the session - but questions that you'll need to ask yourself and your team.
Linked Data: The Real Web 2.0 (from 2008)Uche Ogbuji
"Linking Open Data (LOD) is a community initiative moving the Web from the idea of separated documents to a wide information space of data. The key principles of LOD are that it is simple, readily adaptable by Web developers, and complements many other popular Web trends. Linked, open data is the real substance of Web 2.0, and not flashy AJAX effects. Learn how to make your data more widely used by making its components easier to discover, more valuable, and easier for people to reuse—in ways you might not anticipate."
Whether you're promoting a feature in your upcoming Unity game, documenting your Asset Store asset, or submitting a support ticket, you need technical communication skills. Two of Unity's most experienced technical communicators, Siobhan Gibson from the Documentation team and Kerry Turner from the Enterprise Support team, present a masterclass in technical communication.
In this session, you'll learn how to communicate accurately and clearly with your audience. You'll also see examples of the difference great technical communication makes at every stage of your project's development, from communicating with team members to marketing and support.
Speakers:
Siobhan Gibson - Unity Technologies
Kerry Turner - Unity Technologies
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
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?)
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
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
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?
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
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
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
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
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.