From murdoch at stats.uwo.ca  Fri Jun 10 13:04:55 2005
From: murdoch at stats.uwo.ca (Duncan Murdoch)
Date: Fri, 10 Jun 2005 07:04:55 -0400
Subject: [Rd] Suggestion: help(<package name>)
In-Reply-To: <17065.9006.178509.875354@beren.wu-wien.ac.at>
References: <42A57F5D.7080505@maths.lth.se>	<17061.32946.976628.961120@beren.wu-wien.ac.at>	<42A58EDF.80701@stats.uwo.ca>	<1f269abbabca01e19ee3cdbabc9d14f6@soc.soton.ac.uk>	<42A5B96B.9030701@fhcrc.org>	<42A5BB9D.3000301@stats.uwo.ca>	<42A5C465.3090505@fhcrc.org>	<42A5C789.3060101@stats.uwo.ca>	<42A5D279.3010501@fhcrc.org>	<Pine.LNX.4.61.0506071823460.5947@gannet.stats>	<42A6687A.3000804@stats.uwo.ca>	<Pine.LNX.4.51.0506080918210.12890@artemis.imbe.med.uni-erlangen.de>	<42A6DA63.7020301@stats.uwo.ca>	<Pine.LNX.4.51.0506081633120.22022@artemis.imbe.med.uni-erlangen.de>	<42A89895.6090905@stats.uwo.ca>
	<17065.9006.178509.875354@beren.wu-wien.ac.at>
Message-ID: <42A973D7.6050702@stats.uwo.ca>

Kurt Hornik wrote:
>>>>>>Duncan Murdoch writes:
> 
> 
>>>>>On Tue, 7 Jun 2005, Duncan Murdoch wrote:
>>>>>
>>>>>[...]
>>>>>
>>>>>
>>>>>
>>>>>>My proposal (modified following the suggestions I've heard so far) is as
>>>>>>follows:
>>>>>>
>>>>>> - to check that a couple of help topic aliases exist (<pkg>.package
>>>>>>and <pkg>)
>>>>>> - to recommend that <pkg>.package contain general information about
>>>>>>the package, and that <pkg> be an alias for it, if it isn't used for
>>>>>>some other purpose.
>>>>>> - to write promptPackage() to help create an initial version of
>>>>>><pkg>.package.Rd.  It can get some information from the DESCRIPTION
>>>>>>file; perhaps it could go looking for a vignette, or the INDEX, or
>>>>>> - to modify the other help system tools to make use of this (e.g. the
>>>>>>package:<pkg> heading on a page would become a link to the <pkg>.package
>>>>>>alias, etc.)
> 
> 
>>I've now committed some of this to R-devel, and I invite comments.  I've 
>>abandoned the idea of the check, which seems too controversial.  I've 
>>done the second and third items, but not the 4th.
> 
> 
>>I wrote about a dozen of these files this afternoon as I was refining 
>>promptPackage.  It is very quick to generate a basic man page using 
>>promptPackage with an option saying you want a final version.  Manually 
>>editing this file, running it through checks, etc. took me around 10-20 
>>minutes per package.
> 
> 
>>I only did the base packages, and they probably have less in their 
>>overview than most contributors would want, so someone starting from 
>>nothing would probably take longer --- but many packages already have 
>>the text written somewhere, and they just need to add an alias to an Rd 
>>file, or perhaps reformat an INDEX file.
> 
> 
> Duncan,
> 
> I am not sure why you went ahead on this. 

It seemed to me that most of the discussion focussed on one point 
(forcing extra work on people); this seems to be the only way to get 
discussion on any other aspect of the proposal.

 > My understanding was that
> there was considerable opposition to introducing a convention for
> package documentation intermediate between providing package meta data
> in the DESCRIPTION file and providing vignettes, given in particular
> that we already have such an additional mechanism (INDEX files) for
> historic reasons.

The reason I went ahead was that I think this implementation is an 
improvement on INDEX files, though it is backwards compatible.  In 
several of the overviews I wrote I refer to the automatically generated 
INDEX file.  In cases where the INDEX was manually edited I recommend 
putting the content into the overview topic instead (but do not force 
this). I did it for the boot package (and I'll send the work to Brian if 
he's interested in incorporating it, since boot isn't a base package, 
and he's the maintainer); it wasn't that hard, but I think it was an 
improvement, in that the function names can be links to the function man 
pages, not just names to be copied and pasted.

In at least one case (the stats4 package) I think the INDEX file is 
almost completely useless, so I wrote the overview completely from 
scratch.  I'm not sure I got it right, comments or corrections to the 
content would of course be welcome too.

However, I'd really like to hear a clear explanation of why you think 
the current system is superior.  So far all that I've heard are messages 
like "this forces too much work on package writers", "we did this three 
years ago, why do it again?"  I've explained why I think this solution 
is better, and I've modified it to allow it to be anywhere from "zero 
cost" (ignore it) to "very low cost" (use the automatically generated 
overview), on up as far as a package writer wants to take it.

> I also object particularly to the naming convention.  Rd documentation
> objects are identified by their NAME (as indicated in their \name meta
> data), not the name of the file used for their serialization into Rd
> format.  IF we want to have such a mechanism, then at least let it work
> on a topic-style alias of the form PACKAGE-package, which would be
> consistent with what we do for S4 classes and methods.

The problem with that style is that it doesn't parse to a name, so it 
needs quotes to work with the help system.  For example,

  ?boot-PACKAGE

doesn't do what you'd guess at all.  (It gives help on "-").  Remember, 
my main aim is to simplify the answer to the question "how do I get help 
on foo?"  So far nobody has written out a complete answer to that 
question; I invite you to try to do so.

I'd have to see how it works with all the tools, but in principle I'd 
have no objection to putting "-" in the name, as long as there was 
guaranteed to be a simple pattern to generate an alias that wouldn't 
need quoting.

Would you object to that?  Why?

Unfortunately our help system doesn't handle duplicate aliases, so I 
can't always use the package name as an alias (which is what I'd really 
like to do).  However, changes to allow duplicate aliases would be quite 
hard, and it's not something I'd like to take on.

Duncan Murdoch



[Rd] Suggestion: help(<package name>)
Duncan Murdoch