Hello everybody, as a young/unexperienced R package developer (only a few, mainly for personal use) i was thinking it could be very useful having a "meta" task view for all package-development related packages and/or function. Something like ... Creation - utils::package.skeleton, pkgKitten, Rcpp::Rcpp.package.skeleton Foreign languages interfaces: - Rcpp Documentation - roxygen2 Profiling: - utils::Rprof - profr - proftools Unit test - RUnit - testthat Spell checking - tools::aspell_package_* functions "Misc": - devtools and so on. These are only the ones i (use or know) & (remember), but for sure there is already a lot of useful code in this area and having a summary (by more experienced developers) of which good tools are available would be *very* useful, IMHO. How about it? Thanks, Luca
[Wishlist] a 'PackageDevelopment' Task View
11 messages · Luca Braglia, Duncan Murdoch, Christophe Dutang +2 more
On 25/07/2014 8:05 AM, Luca Braglia wrote:
Hello everybody, as a young/unexperienced R package developer (only a few, mainly for personal use) i was thinking it could be very useful having a "meta" task view for all package-development related packages and/or function. Something like ... Creation - utils::package.skeleton, pkgKitten, Rcpp::Rcpp.package.skeleton Foreign languages interfaces: - Rcpp Documentation - roxygen2 Profiling: - utils::Rprof - profr - proftools Unit test - RUnit - testthat Spell checking - tools::aspell_package_* functions "Misc": - devtools and so on. These are only the ones i (use or know) & (remember), but for sure there is already a lot of useful code in this area and having a summary (by more experienced developers) of which good tools are available would be *very* useful, IMHO. How about it?
Sounds like a good idea. You should do it. Download the "ctv" package, and read the vignette for instructions. Duncan Murdoch
1 day later
2014-07-25 14:29 GMT+02:00 Duncan Murdoch <murdoch.duncan at gmail.com>:
On 25/07/2014 8:05 AM, Luca Braglia wrote:
Hello everybody, as a young/unexperienced R package developer (only a few, mainly for personal use) i was thinking it could be very useful having a "meta" task view for all package-development related packages and/or function. Something like ... Creation - utils::package.skeleton, pkgKitten, Rcpp::Rcpp.package.skeleton Foreign languages interfaces: - Rcpp Documentation - roxygen2 Profiling: - utils::Rprof - profr - proftools Unit test - RUnit - testthat Spell checking - tools::aspell_package_* functions "Misc": - devtools and so on. These are only the ones i (use or know) & (remember), but for sure there is already a lot of useful code in this area and having a summary (by more experienced developers) of which good tools are available would be *very* useful, IMHO. How about it?
Sounds like a good idea. You should do it. Download the "ctv" package, and read the vignette for instructions. Duncan Murdoch
Fine, I've set up a github repo here https://github.com/lbraglia/PackageDevelopmentTaskView and a first thread about task view structure here https://github.com/lbraglia/PackageDevelopmentTaskView/issues/1 Contribution (via e-mail or github) are, of course, really welcome. Cheers, Luca
Hi Luca, Let me suggest to follow the table of contents of http://cran.r-project.org/doc/manuals/r-release/R-exts.html For example, you could use the following TOC: 1 - Creating R pkg 2 - Writing documentation and vignettes 3 - Profiling code 4 - Debugging, spell checking 5 - Foreign languages interfaces 6 - GUI and other frond-ends 7 - Unit testing 8 - Benchmarking 9 - Automation Maybe 7 and 8 could be merged? Regards, Christophe ? Christophe Dutang LMM, UdM, Le Mans, France web: http://dutangc.free.fr Le 26 juil. 2014 ? 17:04, Luca Braglia <lbraglia at gmail.com> a ?crit :
2014-07-25 14:29 GMT+02:00 Duncan Murdoch <murdoch.duncan at gmail.com>:
On 25/07/2014 8:05 AM, Luca Braglia wrote:
Hello everybody, as a young/unexperienced R package developer (only a few, mainly for personal use) i was thinking it could be very useful having a "meta" task view for all package-development related packages and/or function. Something like ... Creation - utils::package.skeleton, pkgKitten, Rcpp::Rcpp.package.skeleton Foreign languages interfaces: - Rcpp Documentation - roxygen2 Profiling: - utils::Rprof - profr - proftools Unit test - RUnit - testthat Spell checking - tools::aspell_package_* functions "Misc": - devtools and so on. These are only the ones i (use or know) & (remember), but for sure there is already a lot of useful code in this area and having a summary (by more experienced developers) of which good tools are available would be *very* useful, IMHO. How about it?
Sounds like a good idea. You should do it. Download the "ctv" package, and read the vignette for instructions. Duncan Murdoch
Fine, I've set up a github repo here https://github.com/lbraglia/PackageDevelopmentTaskView and a first thread about task view structure here https://github.com/lbraglia/PackageDevelopmentTaskView/issues/1 Contribution (via e-mail or github) are, of course, really welcome. Cheers, Luca
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
On 27/07/14 - 09:33, Christophe Dutang wrote:
Hi Luca, Let me suggest to follow the table of contents of http://cran.r-project.org/doc/manuals/r-release/R-exts.html For example, you could use the following TOC: 1 - Creating R pkg 2 - Writing documentation and vignettes 3 - Profiling code 4 - Debugging, spell checking 5 - Foreign languages interfaces 6 - GUI and other frond-ends 7 - Unit testing 8 - Benchmarking 9 - Automation Maybe 7 and 8 could be merged?
Thanks Christophe for the feedback
I'm starting to think I'd like to keep the "Source Code" section
separated from the "Documentation" section ... eg ideally the
macro topics could be in this order
1 - Creation
2 - Source Code
3 - Documentation
4 - Tools and services (was "Automation")
Furthermore IMHO a granular sub-topic structure is a plus (eg
few packages for a distinct/well-focused task is no problem,
maybe a resource ... )
An updated temp TOC (integrating your ideas, and some new
packages listed) could be
==============================================================
1 - Creation
o Creating R packages - utils::package.skeleton, pkgKitten,
Rcpp::Rcpp.package.skeleton
2 - Source code
o Foreign languages interfaces - base R support for that,
inline, Rcpp , Rcpp11, rJava
o Debugging - base::debug utils::recover and friends
o Code analysis - codetools
o Profiling - utils::Rprof, aprof, profr, proftools
o Benchmarking - base::system.time, microbenchmarking, rbenchmark
o Unit testing - RUnit, svUnit, testthat
3 - Documentation
o Writing Package Documentation (functions, data sets, classes
and methods, packages) - roxygen2
o Writing Vignettes - Sweave, knitr
o Spell checking - tools::aspell_package_* functions
4 - Tools and services
o Editors (supporting package development)
o IDEs (supporting package development)
o Makefiles
o Revision control (most common in the R community):
subversion, git
o Hosting services (most common in the R community):
r-forge, github
==============================================================
I have a few doubts if "8.Linking GUIs and other front-ends to R"
from R-exts could be strictly in topic with _R_package_
development (eg looking at the list above) but not much
experience in that area and jm2c.
And I have to integrate these Gabor's suggestions yet :
1) List the software mentioned here or provide links:
http://en.wikibooks.org/wiki/R_Programming/Settings#Integrated_development_environment
http://en.wikipedia.org/wiki/Comparison_of_open-source_software_hosting_facilities
http://en.wikipedia.org/wiki/Comparison_of_revision_control_software
http://en.wikipedia.org/wiki/Continuous_integration#Software
2) Go through the R Extensions manual and add all tools listed.
3) Use of Rcpp/Rcpp11 implies the use of C++ tools too and use of
rjava implies java tools.
Further ideas/comments/proposals are welcome.
Cheers, Luca
On 7/27/2014 7:46 AM, Luca Braglia wrote:
On 27/07/14 - 09:33, Christophe Dutang wrote:
Hi Luca, Let me suggest to follow the table of contents of http://cran.r-project.org/doc/manuals/r-release/R-exts.html For example, you could use the following TOC: 1 - Creating R pkg 2 - Writing documentation and vignettes 3 - Profiling code 4 - Debugging, spell checking 5 - Foreign languages interfaces 6 - GUI and other frond-ends 7 - Unit testing 8 - Benchmarking 9 - Automation Maybe 7 and 8 could be merged?
Thanks Christophe for the feedback
I'm starting to think I'd like to keep the "Source Code" section
separated from the "Documentation" section ... eg ideally the
macro topics could be in this order
1 - Creation
2 - Source Code
3 - Documentation
4 - Tools and services (was "Automation")
Furthermore IMHO a granular sub-topic structure is a plus (eg
few packages for a distinct/well-focused task is no problem,
maybe a resource ... )
An updated temp TOC (integrating your ideas, and some new
packages listed) could be
==============================================================
1 - Creation
o Creating R packages - utils::package.skeleton, pkgKitten,
Rcpp::Rcpp.package.skeleton
2 - Source code
o Foreign languages interfaces - base R support for that,
inline, Rcpp , Rcpp11, rJava
o Debugging - base::debug utils::recover and friends
o Code analysis - codetools
o Profiling - utils::Rprof, aprof, profr, proftools
o Benchmarking - base::system.time, microbenchmarking, rbenchmark
o Unit testing - RUnit, svUnit, testthat
3 - Documentation
o Writing Package Documentation (functions, data sets, classes
and methods, packages) - roxygen2
o Writing Vignettes - Sweave, knitr
o Spell checking - tools::aspell_package_* functions
4 - Tools and services
o Editors (supporting package development)
o IDEs (supporting package development)
o Makefiles
o Revision control (most common in the R community):
subversion, git
o Hosting services (most common in the R community):
r-forge, github
==============================================================
I have a few doubts if "8.Linking GUIs and other front-ends to R"
from R-exts could be strictly in topic with _R_package_
development (eg looking at the list above) but not much
experience in that area and jm2c.
And I have to integrate these Gabor's suggestions yet :
1) List the software mentioned here or provide links:
http://en.wikibooks.org/wiki/R_Programming/Settings#Integrated_development_environment
http://en.wikipedia.org/wiki/Comparison_of_open-source_software_hosting_facilities
http://en.wikipedia.org/wiki/Comparison_of_revision_control_software
http://en.wikipedia.org/wiki/Continuous_integration#Software
2) Go through the R Extensions manual and add all tools listed.
3) Use of Rcpp/Rcpp11 implies the use of C++ tools too and use of
rjava implies java tools.
I've heard claims that people who write documentation with unit
tests first tend to get better code faster than people who write the
code first and documentation (and maybe examples and unit tests) later.
I've heard there is research behind this. However, I'm not sure where
to find it. Others may be able to suggest publications that support or
refute this claim.
In any event, I tend to create (a) documentation first, including
(b) unit tests in the examples section, before (c) writing code. When I
started writing R packages following this model, I felt my software
development productivity increased by a factor of 5 or so. That may
sound crazy, but I had written code for decades and struggled
continually with bugs introduced months or maybe years earlier. "R CMD
check" dramatically shortened the debug time to produce "trustworthy
code" (John Chambers' "prime directive"). As a bonus, I got better
software with documentation making it much easier to share with
potential users -- in less time with less effort, heartache, blood,
sweat and tears, etc. I have not come to using roxygen2, though I've
been enormously impressed with other things Hadley Wickham has done;
fortune(298).
This perspective is reflected in the Wikipedia article on
"Package development process" and the comparison table of "Selected
repositories" in the Wikipedia article on "Software repository". I
believe that both these articles could be improved by people with
broader experience and deeper understanding of these issues than I have.
Spencer Graves
Further ideas/comments/proposals are welcome. Cheers, Luca
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Spencer Graves, PE, PhD President and Chief Technology Officer Structure Inspection and Monitoring, Inc. 751 Emerson Ct. San Jos?, CA 95126 ph: 408-655-4567 web: www.structuremonitoring.com
On 27/07/14 - 08:42, Spencer Graves wrote:
On 7/27/2014 7:46 AM, Luca Braglia wrote:
I'm starting to think I'd like to keep the "Source Code" section
separated from the "Documentation" section ... eg ideally the
macro topics could be in this order
1 - Creation
2 - Source Code
3 - Documentation
4 - Tools and services (was "Automation")
Furthermore IMHO a granular sub-topic structure is a plus (eg
few packages for a distinct/well-focused task is no problem,
maybe a resource ... )
An updated temp TOC (integrating your ideas, and some new
packages listed) could be
==============================================================
1 - Creation
o Creating R packages - utils::package.skeleton, pkgKitten,
Rcpp::Rcpp.package.skeleton
2 - Source code
o Foreign languages interfaces - base R support for that,
inline, Rcpp , Rcpp11, rJava
o Debugging - base::debug utils::recover and friends
o Code analysis - codetools
o Profiling - utils::Rprof, aprof, profr, proftools
o Benchmarking - base::system.time, microbenchmarking, rbenchmark
o Unit testing - RUnit, svUnit, testthat
3 - Documentation
o Writing Package Documentation (functions, data sets, classes
and methods, packages) - roxygen2
o Writing Vignettes - Sweave, knitr
o Spell checking - tools::aspell_package_* functions
4 - Tools and services
o Editors (supporting package development)
o IDEs (supporting package development)
o Makefiles
o Revision control (most common in the R community):
subversion, git
o Hosting services (most common in the R community):
r-forge, github
==============================================================
I've heard claims that people who write documentation with unit tests
first tend to get better code faster than people who write the code first
and documentation (and maybe examples and unit tests) later. I've heard
there is research behind this. However, I'm not sure where to find it.
Others may be able to suggest publications that support or refute this
claim.
In any event, I tend to create (a) documentation first, including (b)
unit tests in the examples section, before (c) writing code. When I started
writing R packages following this model, I felt my software development
productivity increased by a factor of 5 or so.
Hi Spencer, I'm trying that way of developing too (test before code), but the numbering in my previous mail are not meant to be suggestion for development process/flow steps (apologies for that, it was only a way to alternate lists (numbers for sections, bullets for tasks), no numbering is really going to be included in the task view). The proposed TOC was compiled in a way that (to me) eases finding which packages are available, given what are you working on (source code or documentation) and the specific task you need to accomplish. Best, Luca
On 7/27/2014 9:23 AM, Luca Braglia wrote:
On 27/07/14 - 08:42, Spencer Graves wrote:
On 7/27/2014 7:46 AM, Luca Braglia wrote:
I'm starting to think I'd like to keep the "Source Code" section
separated from the "Documentation" section ... eg ideally the
macro topics could be in this order
1 - Creation
2 - Source Code
3 - Documentation
4 - Tools and services (was "Automation")
Furthermore IMHO a granular sub-topic structure is a plus (eg
few packages for a distinct/well-focused task is no problem,
maybe a resource ... )
An updated temp TOC (integrating your ideas, and some new
packages listed) could be
==============================================================
1 - Creation
o Creating R packages - utils::package.skeleton, pkgKitten,
Rcpp::Rcpp.package.skeleton
2 - Source code
o Foreign languages interfaces - base R support for that,
inline, Rcpp , Rcpp11, rJava
o Debugging - base::debug utils::recover and friends
o Code analysis - codetools
o Profiling - utils::Rprof, aprof, profr, proftools
o Benchmarking - base::system.time, microbenchmarking, rbenchmark
o Unit testing - RUnit, svUnit, testthat
3 - Documentation
o Writing Package Documentation (functions, data sets, classes
and methods, packages) - roxygen2
o Writing Vignettes - Sweave, knitr
o Spell checking - tools::aspell_package_* functions
4 - Tools and services
o Editors (supporting package development)
o IDEs (supporting package development)
o Makefiles
o Revision control (most common in the R community):
subversion, git
o Hosting services (most common in the R community):
r-forge, github
==============================================================
I've heard claims that people who write documentation with unit tests
first tend to get better code faster than people who write the code first
and documentation (and maybe examples and unit tests) later. I've heard
there is research behind this. However, I'm not sure where to find it.
Others may be able to suggest publications that support or refute this
claim.
In any event, I tend to create (a) documentation first, including (b)
unit tests in the examples section, before (c) writing code. When I started
writing R packages following this model, I felt my software development
productivity increased by a factor of 5 or so.
Hi Spencer, I'm trying that way of developing too (test before code), but the numbering in my previous mail are not meant to be suggestion for development process/flow steps (apologies for that, it was only a way to alternate lists (numbers for sections, bullets for tasks), no numbering is really going to be included in the task view). The proposed TOC was compiled in a way that (to me) eases finding which packages are available, given what are you working on (source code or documentation) and the specific task you need to accomplish.
Of course: You need to write to match how your target audience
would most likely want to approach the subject.
Regarding "finding which packages are available", I didn't see
the sos package on the list: The "findFn" function searches the help
pages of contributed packages and returns the results sorted so the
package with the most matches and total score appear first.
"writeFindFn2xls" produces an Excel workbook with a package summary
followed by the list of individual pages. For me, it's the fastest
literature search I know for anything statistical. Whatever I find
there has documentation and working code that I can trace line by line
if I don't understand the documentation. I find things faster, and I
learn faster as a result. [Disclaimer: I'm the lead author of sos. If
anyone knows anything better, I'd like to know.]
Spencer
Best, Luca
On 27/07/14 - 10:07, Spencer Graves wrote:
Regarding "finding which packages are available", I didn't see the sos package on the list:
Many packages are still missing (eg devtools) because in these first steps i'm trying to focus mainly on the Task View TOC/structure (and in the case, devtools has to be "splitted" across tasks, TODO) BTW sos is a great package, +1 for the disclaimer, but IMHO doesn't fit R package development strictly jm2c Luca
Hi Luca, Based on previous comments seems like 1) there should be a "multi-functional"/"general" category to cover packages like devtools 2) I think finding existing function code ( e.g in cran packages / github ) is necessary and saves many hours in package development (no one wants to develop a package and then discover they have just reinvented the wheel). So including packages like sos seems justified and helpful. Best, Darren -- View this message in context: http://r.789695.n4.nabble.com/Wishlist-a-PackageDevelopment-Task-View-tp4694537p4694625.html Sent from the R devel mailing list archive at Nabble.com.
2 days later
On 27/07/14 - 13:19, Darren Norris wrote:
including packages like sos seems justified and helpful.
Thanks Darren and John, considering both the programmer and the user point of view, being a bit less strict about inclusion criteria in this case (search) may be definitely helpful. Best, Luca