r-lib / devtools

Tools to make an R developer's life easier
https://devtools.r-lib.org
Other
2.37k stars 755 forks source link

Require shiny as a dependency, since it seems to be required #2484

Closed ernstki closed 1 year ago

ernstki commented 1 year ago

Hi all, hope you're well.

Is your feature request related to a problem? Please describe.

Unfortunately, I haven't been able to reproduce this deterministically—suggestions welcome—but shiny sometimes turns out to be an implicit dependency of devtools.

I had a coworker repeatedly and unsuccessfully trying to install devtools so she could devtools::install_github a package of ours, and what it boiled down to was the error message there is no package called ‘shiny’ which is very easily overlooked among the other console messages when installing devtools in a fresh R environment.

I'm aware of the nuance here (the complicated web of dependencies among DT, crosstalk, shiny, and devtools), and I've already read through #2112, #2133, and related issues.

Describe the solution you'd like

If the dependency chain can't be disentangled cleanly, and one of the dependencies of devtools is going to need to resolve shiny anyway, resulting in hard-to-spot failure messages during initial installation, please make shiny an explicit dependency of devtools.

Describe alternatives you've considered

I've considered updating our package's README to say something like "if you receive the error there is no package called ‘shiny’, then install shiny, but our package doesn't require shiny, and this seems like something devtools should be handling on its own.

Additional context

Thanks for your consideration!

jennybc commented 1 year ago

At the time I write this, devtools appears to require shiny via its dependence on miniUI.

> pak::pkg_deps_explain("devtools", "shiny")
devtools -> miniUI -> shiny        

I don't have the bandwidth to analyze that particular dependency situation atm. But I can say two things to possibly move this along in the meantime:

ernstki commented 1 year ago

@jennybc Thanks for pointing out some alternatives, which I was not aware of. I assume devtools::install_github was chosen by the original package author (and noted in the "Installation" section of the README) just due to its featuring prominently in the available reference materials.

I agree, it seems like shiny being installed as a dependency should "just happen"—that was what felt weird about it. I did attempt to replicate on multiple workstations, on all three OSes, but I wasn't as scientific about it as I could've been (e.g., I did not start with a factory-fresh library directory each time). But if I can manage to nail it down, I'll report back.