From murdoch at stats.uwo.ca  Wed Jun  8 13:05:21 2005
From: murdoch at stats.uwo.ca (Duncan Murdoch)
Date: Wed Jun  8 13:05:30 2005
Subject: [Rd] Suggestion: help(<package name>)
In-Reply-To: <42A6BDAE.8090501@maths.lth.se>
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>	<17061.52921.689940.969317@stat.math.ethz.ch>	<57c8613071f69cf7daee6e7e3f337c95@soc.soton.ac.uk>
	<42A6BDAE.8090501@maths.lth.se>
Message-ID: <42A6D0F1.6090600@stats.uwo.ca>

Henrik Bengtsson wrote:
> It seems that it comes down to two things: 1) a standard Rd topic or 
> alias <pkg>.package, and 2) enforcing this standard with R CMD check.
> 
> Pro's and con's for (1):
> 
> Pros:
> - Easy to find overview information on a package, that is, you know 
> *where* to find it.
> - Allows a packages to link to another package.
> - Shows up in the HTML index page.
> - The <pkg>.package.html can be included on the CRAN package overview. 
> This can then also become the author's "webpage" (kiosk?) for the 
> package including installation instructions, license, future plans etc.
> Searchable on the web (==you can get information before trying to 
> download/install, which sometimes fails; catch 22.)
> 
> Cons:
> - Conflicts with other topic of the same name.
> - "Just another vignette" (?)
> 
> 
> Pro's and con's for (2):
> 
> Pros:
> - Guarantees that a package can link to another package.
> - Standard immediately adopted.
> 
> Cons:
> - Requires more maintainance.
> - Without automatic tools, redundancy is introduced (more maintainance).
> 
> 
> My comments:
> 
> I think it is hard to argue that a standard similar to (1) is unwanted. 
> Also, I don't think anyone has objected on this. The objection has been 
> on (2). So my suggestion is that one writes up a standard on (1) and 
> *ask* developers to follow it.
> 
> If enforcement by R CMD check (2) was implemented too, then I think it 
> only requires a single \alias{<pkg>.package} in any of the Rd files, 
> because as far as I understand it at least one is required. This would 
> not require much work ("almost cheap"). This would guarantee a link at 
> least to something. A more advanced version is that the <pkg>.package.Rd 
> file is automatically created by R CMD build if missing ("zero cost").

I really like this "zero cost" option.  I think it addresses the main 
problem with the proposal (all the work for package writers that it 
creates), while keeping the main benefit (a standard place for package 
help *within the help system*).

It might be tricky to implement (the build tools aren't all in R and 
aren't consistent across platforms), but it seems like a reasonable 
compromise to me.

Duncan Murdoch

> 
> To follow up on Gabor's suggestion to add more R CMD check granuality 
> than errors and warnings. Using classes and the "new" exception 
> handling, one could introduce a warning class called "Suggestion" 
> (CranSuggestion), which gives suggestions to the user, but not enforce 
> them (warning are not allowed on CRAN).
> 
> To extend this idea further, one could add non-enforced checks if a 
> package follows certain standardizations or not.  I can image such 
> checks to be plugins to R CMD check or standalone.  Other solutions may 
> also used.  For instance, R CMD checkRCC could check a package against 
> the coding convention RCC (http://www.maths.lth.se/help/R/RCC/). 
> Supplementary or complementary standards can provide their own checks. 
> Such tools would be helpful for large projects to conform to the same 
> standards, but not enforcing them.  Packages following certain standards 
> could then advertize this to help the user and other developers 
> utilizing their packages and so.
> 
> To summarize, I think it is good if you can communicate that you follow 
> a certain standard, and it is even better if more peoples are using the 
> same standard. I agree, that enforced standards are painful, if you 
> disagree with them (or find the unnecessary).
> 
> Cheers
> 
> Henrik
> 
> 
> Robin Hankin wrote:
> 
>>The reason I like .Rd files is that I can run the examples easily and, 
>>as Martin points out,
>>one does not need to learn a new syntax.
>>
>>How about adding the following to R-exts:
>>
>>"We encourage the package developer to include a file named 
>>foo.package.Rd in the "man"
>>directory, to provide a terse overview of the foo package.  This Rd file 
>>is intended to be
>>the first port of call for a new user of the package, and should provide 
>>(or point to)
>>working examples of the package's functionality.  It may also provide 
>>details or rationale
>>for the package's structure, if non-standard; and perhaps document other 
>>features of
>>the package that might escape a new user's notice.
>>
>>See package foo for an example"
>>
>>and package.skeleton() could be modified to  write a skeleton version of 
>>foo.package.Rd
>>and put it in the man directory.
>>
>>best wishes everyone
>>
>>rksh
>>
>>
>>Duncan writes:
>>
>>
>>>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.)
>>>
>>
>>Martin:
>>
>>
>>>And as much as I do like (and read) the vignettes that are
>>>available, I also do agree that writing one other *.Rd file is
>>>easier for many new package authors than to write a
>>>vignette -- the package author already had to learn *.Rd syntax
>>>anyway -- and it's nice to be able to produce something where
>>>hyperlinks to the other existing reference material (ie. help
>>>pages) just works out of the box.
>>>
>>
>>Duncan again:
>>
>>
>>>Currently R has 3 types of help:  the .Rd files in the man directory 
>>>(which are converted into plain text, HTML, compiled HTML, LaTex, DVI, 
>>>PDF, etc), the vignettes, and unstructured files in inst/doc.  We 
>>>currently require .Rd files for every function and data object.  
>>>Adding a requirement to also document the package that way is not all 
>>>that much of a burden, and will automatically give all those output 
>>>formats I listed above.  It will help to solve the often-complained 
>>>about problem   of packages that contain no overview at all.  
>>>(Requiring a vignette and giving a way to display it would also do 
>>>that, but I think requiring a .Rd file is less of a burden, and for 
>>>anyone who has gone to the trouble of creating a vignette, gives a 
>>>natural place for a link to it.  Vignettes aren't used as much as they 
>>>should be,  because they are hidden away where users don't see them.)
>>
>>
>>>
>>-- 
>>Robin Hankin
>>Uncertainty Analyst
>>National Oceanography Centre, Southampton
>>European Way, Southampton SO14 3ZH, UK
>> tel  023-8059-7743
>>
>>______________________________________________
>>R-devel@stat.math.ethz.ch mailing list
>>https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>>
> 
> 
> ______________________________________________
> R-devel@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel


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