Re: [DISCUSS] Documentation donation

2020-05-04 Thread Paul Tepley
The order Josh mentions seems correct, but usability and ease of consumption is 
just as important if not more as correctness and coverage.

In technical writing, the key elements to usability and ease of consumption are 
findability and searchability. Findability means finding information for 
something you want to do without knowing what it is beforehand. Searchability 
is finding information you know about using
 the terms that you know. The key to effective documentation is that 
information is both findable and searchable in "terms that the users know". A 
simple example is gossip. If you know nothing about Cassandra, you probably 
understand that nodes talk to each other, which you might search for using 
"internode communication" or "network communication".

Without the ability to locate information you want, correctness and coverage 
are meaningless.

Another principle that makes good documentation is that they are 
solution-based. Two examples are replacing a node and adding a node. 

Another important feature of being able to produce accurate and complete docs 
is the ability to reuse information. Using the previous examples, replacing a 
node and adding a node, may have some of the same steps. Reusing information is 
not saving time by writing only once, it's about making sure that when 
information is updated, it's updated everywhere it needs to be (especially in 
places you don't know about). Having a single source for reusing information is 
essential to making this happen.  

Also, related to reusing information, the ability to pull from a central 
location using includes/shortcodes/etc. can ease the testability and 
findability of code examples used in documentation. Rather than scattering code 
throughout the docs, you can store the code snippets in their own repo. For 
instance, asciidoc has such a capability (amongst others):

[source,ruby]

include::example.rb[]


The last feature I want to mention that contributes to good documentation is 
semantic structure. The idea of semantic structure is similar to 
object-oriented programming, where objects contain data. So instead of manually 
defining all the attributes of the warning, you can just declare the warning 
and add the data. For example, suppose you want a warning that says "Don't do 
this, it will kill your system!" In a non-semantics authoring, such as Markdown 
(designed as format for writing for the web), you'd have to define each element:

**Warning**
Don't do this, it will kill your system!

The problem here is not so much having to define each element but that a 
different writer can do something different, such as vary the marking from ** 
to *,  as there is no enforced structure:

*Warning*
Don't do this, it will kill your system!

Although this is a very simple example, not being able to enforce a standard  
can be confusing to the user because clues to using the documentation lack 
consistency and refinement.

In semantics-based documentation, such in reStructuredText, you can just write 

. warning:: Don't do this, it will kill your system! 

and every instance will be consistent.

I realize that everyone wants something simple that they don't have to learn, 
but doing so will:

1) Decrease the efficiency of writing docs, which reduces the likelihood of 
complete coverage.
2) Reduce correctness, because the writer does not necessarily know everywhere 
information needs to be updated.
3) Diminish the usability and ease of consumption. For example, a lack of 
consistency reduces the ability of the user to quickly scan a document for the 
information they need and appears amateurish.  

On 2020/05/04 15:13:49, Joshua McKenzie  wrote: 
> I've been mulling over this topic the past few days as we often seem to get
> mired in debates over technical details of offerings without a clear value
> system to weigh them against one another. In the case of documentation, I'd
> propose that we think about this from the perspective of the users of the
> documentation. I suspect (and would love to hear points of view for or
> against this claim as I do not have first-hand knowledge) that doc users
> would care about the following in this order:
> 
> 1) Correctness
> 2) Coverage
> 3) Usability and ease of consumption
> 
> Assuming we can get a simple list of traits to optimize for, it may be
> helpful to weigh the pros and cons of various documentation frameworks
> against how they facilitate or deliver against those metrics. For example:
> ease of developer ramp and contribution to docs would increase Coverage,
> where more robust tooling and inter-linkage could contribute to ease of
> consumption.
> 
> 
> 
> On Fri, May 1, 2020 at 1:52 PM Jon Haddad  wrote:
> 
> > We've already got Sphinx set up, so you can contribute today.  There's a
> > docker container in the `docs` directory and a readme that can help you get
> > started.
> >
> > On Fri, May 1, 2020 at 10:46 AM Chen-Becker, Derek
> >  wrote:
> >
> > >  From the peanut galler

Re: [DISCUSS] Documentation donation

2020-05-06 Thread Paul Tepley
To address your comments, the point I was trying to make is that correctness, 
completeness, and usability are really not hierarchical. From a user's point of 
view not finding information is frustrating, incorrect information is 
frustrating, and incomplete information is frustrating. Individual user's 
reaction to these frustrations will vary from taking it in stride to abandoning 
a product.

Wrong in documentation isn't analogous to incorrect code. Incorrect code breaks 
something, but there are levels of wrong in docs that can still provide enough 
information for users to accomplish tasks or to gain knowledge. Obviously we 
don't want any incorrect docs, but it's not the same as incorrect coding.

The thing that is really most important from a tech writer's perspective is a 
system designed to produce documentation is much better than one that is not. 
For a complex product like Cassandra, the ability to reuse is paramount because 
it promotes writing solution-based documents and maintainability. Without 
which, productivity goes down, accuracy goes down, and usability goes down.   

On 2020/05/05 15:14:00, Joshua McKenzie  wrote: 
> >
> >  usability and ease of consumption is just as important if not more as
> > correctness and coverage.
> 
> I disagree pretty strongly with this. There is negative value in
> documentation that's incorrect and inaccurate. Much like comments or code:
> if it's wrong, I posit that nothing else matters. Honestly, if
> documentation were wrong it'd probably be better if it were impossible to
> find. :)
> 
> Without the ability to locate information you want, correctness and
> > coverage are meaningless.
> 
> This implies a binary situation which is, I believe, hyperbolic. I think it
> would be more accurate to say "The most correct and thorough documentation
> in the world can be completely hamstrung if it can't be navigated".
> 
> All are important; we need correct, thorough, and easily navigable and
> usable documentation. But we also need a way to value different
> documentation frameworks against one another or we're going to get
> gridlocked in a vigorous airing of opinions where nobody changes their PoV
> and eventually whichever side is the most stubborn "wins", or the topic
> just rots on the vine, neither of which are healthy.
> 
> On Mon, May 4, 2020 at 7:20 PM Paul Tepley  wrote:
> 
> > The order Josh mentions seems correct, but usability and ease of
> > consumption is just as important if not more as correctness and coverage.
> >
> > In technical writing, the key elements to usability and ease of
> > consumption are findability and searchability. Findability means finding
> > information for something you want to do without knowing what it is
> > beforehand. Searchability is finding information you know about using
> >  the terms that you know. The key to effective documentation is that
> > information is both findable and searchable in "terms that the users know".
> > A simple example is gossip. If you know nothing about Cassandra, you
> > probably understand that nodes talk to each other, which you might search
> > for using "internode communication" or "network communication".
> >
> > Without the ability to locate information you want, correctness and
> > coverage are meaningless.
> >
> > Another principle that makes good documentation is that they are
> > solution-based. Two examples are replacing a node and adding a node.
> >
> > Another important feature of being able to produce accurate and complete
> > docs is the ability to reuse information. Using the previous examples,
> > replacing a node and adding a node, may have some of the same steps.
> > Reusing information is not saving time by writing only once, it's about
> > making sure that when information is updated, it's updated everywhere it
> > needs to be (especially in places you don't know about). Having a single
> > source for reusing information is essential to making this happen.
> >
> > Also, related to reusing information, the ability to pull from a central
> > location using includes/shortcodes/etc. can ease the testability and
> > findability of code examples used in documentation. Rather than scattering
> > code throughout the docs, you can store the code snippets in their own
> > repo. For instance, asciidoc has such a capability (amongst others):
> >
> > [source,ruby]
> > 
> > include::example.rb[]
> > 
> >
> > The last feature I want to mention that contributes to good documentation
> > is semantic structure. The idea of s