Documentation Improvement Proposal

I would like to touch on a more general issue I've had with language
docs of all kinds not limited to programming languages either. The
big issue I tend to have is that the documentation is essentially a
dictionary for various functions, the "how" portion or the grammar is
usually located in a separate book or document which makes it more
difficult to put things together. It would be wonderful if any
refresh to Ruby's documentation made a concerted effort to make sure
that it is simple to cross-reference the grammar with method
definitions and other example elements. Right now documentation
across the board (Not just Ruby's.) in my experience seems to be a
list of definitions and not much else. Imagine trying to learn a
second language by just reading a dictionary and not being told about
how to structure nouns, verbs, etc. Or more accurately imagine
learning them separately.

It isn't enough to have good code samples, the samples have to be
integrated with the rest of the language as a whole, integration has
to be pervasive. If a function G in example 2010232 takes a block as
an argument a user on the doc site should be able to select that
argument and find out more about what a block is in Ruby. Preferably
in a way that doesn't take the user away from the code they started
out looking at.

In your headers:

List-Help: <mailto:ruby-talk-ctl@ruby-lang.org?body=help>

So you email the address with help and get:

<snip>

You can figure out the range from the archives:

http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml

Remember, mail ruby-talk-ctl, not ruby-talk

Good idea. Though, if the work has already been done, I'd prefer to
use that, simply since it'll take ages for me to receive a couple of
thousand messages (Even if it's 'just' the headers to scan the
the t-shirt in disgust.

Though, I could also scrape Google search results, which would make
things a lot easier, since it'd suppress duplicates (well, most of
them).

Needs some more pondering on my end. :slight_smile:

···

On Wed, Aug 3, 2011 at 3:51 AM, Eric Hodel <drbrain@segment7.net> wrote:
Subject: line and get the message ID). Been there, done that, burned

--
Phillip Gawlowski

phgaw.posterous.com | twitter.com/phgaw | gplus.to/phgaw

A method of solution is perfect if we can forsee from the start,
and even prove, that following that method we shall attain our aim.
-- Leibniz

Maybe I'm missing something, but in my mind, that's what documentation is.
Switch it around, imagine trying to learn a second language, and desperately
needing to ask where the bathroom is, but every time you try to find the
translation for "bathroom" you wind up having to wade through three pages of
context / examples.

I think there is merit to what you are suggesting, but I don't think it is
in the docs. Or, if it is, it needs to work with the current style of docs,
because much more frequently I just want to figure out "what was that method
that returns an element from a hash, without invoking #" go to the docs
"oh yeah, #fetch". That process should be as streamlined as possible. If you
want to add other stuff as well, that's fine, but make sure not to impede
what I think is the docs' primary function, figuring out what method you
want, what it expects (signature), and what it does (a sentence or two, an
example or two).

I'm generally satisfied with Ruby's docs. There really are only two things I
take issues with. The first is presentation, I prefer the ruby-doc.org style
of presentation. The second is completeness, rdoc.info is much more complete
to the point that I'm probably going to switch. It also has docs for gems,
which I think is really cool. And it filters the list as you search, which
okay. I just find its format harder to follow (possibly because I'm used to
ruby-doc, but IDK, I like that giant pool of methods at the top of ruby-doc
much better than the list at the top of rdoc).

Anyway, that's my two cents.

···

On Tue, Aug 2, 2011 at 7:27 PM, Kevin <darkintent@gmail.com> wrote:

Right now documentation
across the board (Not just Ruby's.) in my experience seems to be a
list of definitions and not much else. Imagine trying to learn a
second language by just reading a dictionary and not being told about
how to structure nouns, verbs, etc. Or more accurately imagine
learning them separately.

I'm generally satisfied with Ruby's docs. There really are only two
things I take issues with. The first is presentation, I prefer the
ruby-doc.org style of presentation.

I loathe the frameset style of ruby-doc.org for things like Array
documentation. There are too many levels of navigation required to reach
things sometimes, and lots of back-buttoning when the first guess about
where to find something turns out to be wrong.

The second is completeness, rdoc.info is much more complete to the
point that I'm probably going to switch. It also has docs for gems,
which I think is really cool. And it filters the list as you search,
which okay. I just find its format harder to follow (possibly because
I'm used to ruby-doc, but IDK, I like that giant pool of methods at the
top of ruby-doc much better than the list at the top of rdoc).

I did not know rdoc.info existed. If it's as complete as you make it
sound, it's probably going to be my main go-to for Web-based Ruby
documentation from now on. The interface is awesome (now that I know
where to find core). Thanks for mentioning it.

···

On Wed, Aug 03, 2011 at 12:03:27PM +0900, Josh Cheek wrote:

--
Chad Perrin [ original content licensed OWL: http://owl.apotheon.org ]

Right now documentation
across the board (Not just Ruby's.) in my experience seems to be a
list of definitions and not much else. Imagine trying to learn a
second language by just reading a dictionary and not being told about
how to structure nouns, verbs, etc. Or more accurately imagine
learning them separately.

Maybe I'm missing something, but in my mind, that's what documentation is.
Switch it around, imagine trying to learn a second language, and desperately
needing to ask where the bathroom is, but every time you try to find the
translation for "bathroom" you wind up having to wade through three pages of
context / examples.

No you don't Hypertext already solves that problem since the grammar
related information is essentially metadata in this case. Besides
your example only works in concrete cases. As it stands now
dictionaries are effectively useless without understanding at least a
small fraction of the language grammar if you are trying to find out
how to do something abstract. This is where your example falls apart.
A list of words is not going to help someone just learning how to
form meaningful statements to form meaningful statements.

I think there is merit to what you are suggesting, but I don't think it is
in the docs. Or, if it is, it needs to work with the current style of docs,
because much more frequently I just want to figure out "what was that method
that returns an element from a hash, without invoking #" go to the docs
"oh yeah, #fetch". That process should be as streamlined as possible. If you
want to add other stuff as well, that's fine, but make sure not to impede
what I think is the docs' primary function, figuring out what method you
want, what it expects (signature), and what it does (a sentence or two, an
example or two).

I maintain an internal application that deals with student records.
Since I'm stuck on .net 2.0 and cannot use Linq I constructed a
psuedo ORM and my model classes have a fill method to set the
properties of a given instance. I had prepared the fill method a very
long time ago and had not actually used it. (This code was part of a
secondary code base when I created it and I was not the project lead
at the time so my code did not see immediate use.) Because of this
lag between creation and usage I did not notice the reason why
Class.fill would refuse to actually set the properties of the class
instance. I thought I had the logical equivalent of

fill(record_hash)
  self.property1=record_hash[:foo]
  self.property2=record_hash[:bar]
end

What I really had was something like:

fill(record_hash)
  a=Class.new
  a.property1=record_hash[:foo]
  a.property2=record_hash[:bar]
  return a
end

See the problem here? Assuming that the syntax is correct the two
functions have semantically different meanings. Given the the second
form of the function if fill is called on an instance of a class only
one of the following statements will actually work:
class_instance1=Class.new
class_instance2=Class.new
class_instance1.fill(record_hash) #Fails miserably since it returns a
new class instance with set properties rather than setting the
properties of the caller. A perfectly valid statement though.
class_instance2=class_instance1.fill(record_hash) #This works since
the second form returns a filled instance and thus requires a second
variable to receive the return value in the calling code.

Only the first form allows for class_instance1.fill(record_hash) to
set the values of the current instance.

A simple logic error that you may or may not pick up just by reading
the function definitions. I think most would agree that it is ass
backwards to have these kinds of details stashed away in treatises
like the Pickaxe. The way people try to solve this problem, by
including this kind of information on the main documentation website
in the form of tutorials isn't enough. The tutorials are still
disconnected from the API docs and vice versa. My point is that every
language is the union of the given grammar and the definitions of
vocabulary in the context of this discussion this means the method
definitions we are used to. While it is often very useful for us to
think of definitions and grammar as separate things this kind of
thinking becomes a hindrance when trying to learn how a language works
before one has properly internalized the grammar of the language.
What that means when constructing documentation is that not making it
easy to link API to language spec fosters a haphazard kind of learning
that makes it more difficult than it needs to be to learn how to deal
with abstract problems in the language of choice.

···

On Tue, Aug 2, 2011 at 11:03 PM, Josh Cheek <josh.cheek@gmail.com> wrote:

On Tue, Aug 2, 2011 at 7:27 PM, Kevin <darkintent@gmail.com> wrote:

I'm generally satisfied with Ruby's docs. There really are only two things I
take issues with. The first is presentation, I prefer the ruby-doc.org style
of presentation. The second is completeness, rdoc.info is much more complete
to the point that I'm probably going to switch. It also has docs for gems,
which I think is really cool. And it filters the list as you search, which
okay. I just find its format harder to follow (possibly because I'm used to
ruby-doc, but IDK, I like that giant pool of methods at the top of ruby-doc
much better than the list at the top of rdoc).

Anyway, that's my two cents.