Re: documentation standards (was [svn:perl6-synopsis] r14421 - doc/trunk/design/syn)

2007-06-22 Thread David Green

On 6/22/07, Smylers wrote:

David Green writes:

 Well, clutter like Blah: none seems to me to be more the fault of
 the doc-formatter for not hiding lines like that.


It's more the repetition in the lines you snipped that I really object to:


Ah. (That was sneaky of me.)  I agree with that -- the older I get, 
the more allergic I become to typing the same thing more than once. 
(That's why we like Perl, for it's DRY wit!)


given the function's name, the name(s) of its parameter(s), and the 
short description of what it does, it's obvious what the 
parameter(s) are for and what it returns; repeating that information 
doesn't help anybody.

(It may help computers, though.)


I'm wholly in favour of some syntactic sugar so such repetition isn't 
necessary (which doesn't mean redefining Pod, of course, but rather 
coming up with some alternative that would work this way).



-David


Re: documentation standards (was [svn:perl6-synopsis] r14421 - doc/trunk/design/syn)

2007-06-21 Thread David Green

On 6/21/07, Smylers wrote:

Mark Overmeer writes:
  The boundary between freedom and anacharchy is faint.
Indeed.  And I'd much rather we err on the side of anarchy.


I'd much rather we didn't err at all!  Just because something isn't 
perfect doesn't mean it's an error, or that it's not worth trying.


[...] and inadvertently prevent somebody in the future from doing 
something really clever that none of us have yet thought of.


How does having some standards prevent anybody from doing anything? 
Nobody's proposing Perl Documentation Police who will come and 
kneecap you if you try to do something new and better.



  And those have a good example in standard UNIX manual-pages.  So:

 there is a definitions for them, which most people have seen.
I am sceptical of your claim that most Cpan authors have seen any 
official definitions of sections in Unix manual pages.


He only said they'd seen good examples.  Which, really, are a kind of 
standard.  Even if all we did was to write down those standards 
somewhere so that people weren't required to absorb them by osmosis, 
that would be a good thing.


I agree.  And programming languages develop in hard-to-predict ways, 
which is why Larry is putting lots of flexibility for things to be 
redefined into Perl 6, so it can grow and adapt in line with future 
developments.  It would be good if Pod can keep up.


Great, so let's have lots of rules and standards for documentation -- 
we'll just make sure they include formal ways to accommodate future 
growth.  Perl 6 is full of rules (it's software! all it is is a big 
list of rules!), but it's still wonderfully flexible.  I want lots of 
doc-rules, but absolutely do I want them to be flexible too.


I just don't believe that _anybody_ can come up with rules that 
won't be bettered at some point in the future.


Maybe; that doesn't mean we can't start off with some really good 
rules today.  Besides, insofar as that's true today, it will be just 
as true in the future, so we'd be perpetually waiting for tomorrow's 
Better Rules instead of actually doing something with today's Pretty 
Good Rules.


I've encountered Javadoc, and I really dislike it[*0].  The fact 
that a standard exists does not make it a good one.


Nope.  But we're living in Javadoc's future, so let's learn from its 
limitations and make P6doc better.



[...]
  Exceptions: none
  Side Effects: none

Lots of structure and consistency, but in practical terms no 
additional information compared to my informal doc -- and the 
verbosity and repetition actually make it harder to spot the 
information you want.


Well, clutter like Blah: none seems to me to be more the fault of 
the doc-formatter for not hiding lines like that.  But even though I 
naturally tend to the lazy side myself, you have to admit there is 
*some* info gained by requiring the Blah: none -- namely that there 
really is no blah (as opposed to, There might be, but I forgot to 
say so.).


That makes me think of a practical example, though:  Say you want to 
find all the functions in your code that do have side-effects.  Being 
able to search for code that has an explicit side-effects tag with 
a standard value of none (or undef or whatever) would be really 
useful.


Actually, can't P6 tell whether code has side-effects or not?  Which 
is still a case for having structured docs; Perl could parse your 
code and automatically insert a properly-formatted line to say so, 
competently situated in the right place inside the rest of the 
documentation you had to write manually.  (And your local style 
sheet could determine whether you see that line only when there are 
side-effects, or only when there aren't, or never, or)


The point isn't to have *only one* way to document your code; it's to 
have *at least one*, that is, at least one way to build the FAD 
(Fancy Advanced Documentation) tools of the future.  I envision 
things like perldoc Test::BigHugeModule --sub=is (sure beats 
searching the page with ctrl-F is; and a pretty modest wish, I 
think).  Or perhaps I'm in the debugger, looking at the value of $foo 
and wondering why it ==666 and whether that's a bad thing -- I could 
hit a key and display the docs for that arg.  Or I type bar( and my 
text editor helpfully notices that I'm using the bar() function, asks 
Perl for the specs, and pops up a handy summary of each parameter; it 
could even see that bar() takes exactly one argument, of type 
Mammal::African, and that I have exactly one such variable in scope, 
$aardvark, and be ready to auto-complete it for me.


Actually, that last bit about detecting types in a signature or 
variable is already possible, because Perl has formal rules for 
specifying such things in your code; I'd like the same advantages 
conferred on the documentation as well.
If you have a file with the text of the Magna Carta, a computer is 
not going to understand it.  You can add a bit of structure, like 
headings and numbered lists, but