Skip to content

Package inclusion in R core implementation

6 messages · Jim Hester, John C Nash, Avraham Adler +1 more

#
Conversely, what is the process to remove a package from core R? It seems
to me some (many?) of the packages included are there more out of
historical accident rather than any technical need to be in the core
distribution. Having them as a core (or recommended) package makes them
harder update independently to R and makes testing, development and
contribution more cumbersome.

On Fri, Mar 1, 2019 at 4:35 AM Morgan Morgan <morgan.emailbox at gmail.com>
wrote:

  
  
#
As the original coder (in mid 1970s) of BFGS, CG and Nelder-Mead in optim(), I've
been pushing for some time for their deprecation. They aren't "bad", but we have
better tools, and they are in CRAN packages. Similarly, I believe other optimization
tools in the core (optim::L-BFGS-B, nlm, nlminb) can and should be moved to
packages (there are already 2 versions at least of LBFGS that I and Matt Fidler
are merging). And optim::SANN does not match any usual expectations of users.

I'm sure there are other tools for other tasks that can and should move to packages
to streamline the work of our core team. However, I can understand that there is this
awkward issue of actually doing this. I know I'm willing to help with preparing
"Transition Guide" documentation and scripts, and would be surprised if there are
not others. R already has a policy of full support only for current version, so
hanging on to antique tools (the three codes at the top are based on papers all
of which now qualify for >50 years old) seems inconsistent with other messages.

For information: I'm coordinating a project to build understanding of what
older algorithms are in R as the histoRicalg project. See
https://gitlab.com/nashjc/histoRicalg. We welcome participation.

Best, JN
On 2019-03-04 7:59 a.m., Jim Hester wrote:
#
On Mon, Mar 4, 2019 at 5:01 PM J C Nash <profjcnash at gmail.com> wrote:

            
I have No arguments with updating code to more correct or modern versions,
but I think that as a design decision, base R should have optimization
routines as opposed to it being an external package which conceptually
could be orphaned. Or at least some package gets made recommended and
adopted by R core.

Thank you,

Avi
#
I concur with Avraham that capabilities need to be ensured e.g., in recommended
packages. I should have mentioned that. My concern is that the core should be
focused on the programming language aspects. The computational math and some of the more
intricate data management could better be handled by folk outside the core.

JN
On 2019-03-04 9:12 a.m., Avraham Adler wrote:
#
On 04/03/2019 7:59 a.m., Jim Hester wrote:
You are conflating base and recommended packages.  Base packages can't 
be updated independently of R because they provide or make use of R 
internals, so they couldn't be distributed separately.  The list of base 
packages is

  [1] "base"      "compiler"  "datasets"  "graphics"  "grDevices" "grid" 
      "methods"   "parallel"  "splines"   "stats"     "stats4"
[12] "tcltk"     "tools"     "utils"

The other packages distributed with R are recommended packages:

  [1] "boot"       "class"      "cluster"    "codetools"  "foreign" 
"KernSmooth" "lattice"    "MASS"       "Matrix"     "mgcv"
[11] "nlme"       "nnet"       "rpart"      "spatial"    "survival"

Those ones have no particular connection to the internals, but they are 
distributed with R, and suffer through somewhat more rigorous testing 
than most contributed packages.  Some of them are used in R's own tests. 
  They can be updated at any time, but their authors are asked not to 
update them near R releases.  In many cases (but not all) their current 
maintainers are R Core members.

In answer to your question and Morgan's:  the process is completely 
opaque.  R Core will add or remove a package if they think it makes 
sense from their point of view.  Generally that happens very rarely, 
because it can be a lot of work, and usually there's not much to be gained.
#
Rereading my post below, I realize scope for misinterpretation. As I have said earlier,
I recognize the workload in doing any streamlining, and also the immense service to us
all by r-core. The issue is how to manage the workload efficiently while maintaining
and modernizing the capability. That is likely as challenging as doing the work itself.

JN