{"id":13400920,"url":"https://github.com/ropensci-archive/outsider","last_synced_at":"2025-03-14T06:32:01.130Z","repository":{"id":56935407,"uuid":"145114547","full_name":"ropensci-archive/outsider","owner":"ropensci-archive","description":":warning: ARCHIVED :warning: Install and run programs, outside of R, inside of R","archived":true,"fork":false,"pushed_at":"2022-06-17T07:09:11.000Z","size":1766,"stargazers_count":46,"open_issues_count":0,"forks_count":7,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-05-20T01:15:02.337Z","etag":null,"topics":["docker","reproducibility","rstats"],"latest_commit_sha":null,"homepage":"","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ropensci-archive.png","metadata":{"files":{"readme":"README-not.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-17T11:51:55.000Z","updated_at":"2024-02-06T13:46:01.000Z","dependencies_parsed_at":"2022-08-21T05:50:13.496Z","dependency_job_id":null,"html_url":"https://github.com/ropensci-archive/outsider","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci-archive%2Foutsider","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci-archive%2Foutsider/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci-archive%2Foutsider/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ropensci-archive%2Foutsider/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ropensci-archive","download_url":"https://codeload.github.com/ropensci-archive/outsider/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243537997,"owners_count":20307099,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","reproducibility","rstats"],"created_at":"2024-07-30T19:00:56.913Z","updated_at":"2025-03-14T06:32:01.121Z","avatar_url":"https://github.com/ropensci-archive.png","language":"R","funding_links":[],"categories":["R"],"sub_categories":[],"readme":"\n\u003c!-- README.md is generated from README.Rmd. Please edit that file --\u003e\n\n\u003c!-- devtools::rmarkdown::render(\"README.Rmd\") --\u003e\n\n\u003c!-- Rscript -e \"library(knitr); knit('README.Rmd')\" --\u003e\n\n# Install and run programs, outside of R, inside of R \u003cimg src=\"logo.png\" height=\"200\" align=\"right\"/\u003e\n\n[![Build\nStatus](https://travis-ci.org/ropensci/outsider.svg?branch=master)](https://travis-ci.org/ropensci/outsider)\n[![AppVeyor build\nstatus](https://ci.appveyor.com/api/projects/status/github/ropensci/outsider?branch=master\u0026svg=true)](https://ci.appveyor.com/project/DomBennett/outsider)\n[![Coverage\nStatus](https://coveralls.io/repos/github/ropensci/outsider/badge.svg?branch=master)](https://coveralls.io/github/ropensci/outsider?branch=master)\n[![Project Status: Active – The project has reached a stable, usable\nstate and is being actively\ndeveloped.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3615177.svg)](https://doi.org/10.5281/zenodo.3615177)\n[![ropensci](https://badges.ropensci.org/282_status.svg)](https://github.com/ropensci/software-review/issues/282)\n[![DOI](https://joss.theoj.org/papers/10.21105/joss.02038/status.svg)](https://doi.org/10.21105/joss.02038)\n[![CRAN\ndownloads](http://cranlogs.r-pkg.org/badges/grand-total/outsider)](https://CRAN.R-project.org/package=outsider)\n\n\u003e The Outsider is always unhappy, but he is an agent that ensures the\n\u003e happiness for millions of ‘Insiders’.\u003cbr\u003e\u003cbr\u003e *[The Outsider,\n\u003e Wilson, 1956](https://en.wikipedia.org/wiki/The_Outsider_\\(Colin_Wilson\\)).*\n\n\u003cbr\u003e Integrating external programs into a deployable, R workflow can be\nchallenging. Although there are many useful functions and packages (e.g.\n`base::system()`) for calling code and software from alternative\nlanguages, these approaches require users to independently install\ndependant software and may not work across platforms. `outsider` aims to\nmake this easier by allowing users to install, run and control programs\n*outside of R* across all operating systems.\n\nIt’s like [whalebrew](https://github.com/whalebrew/whalebrew) but\nexclusively for R.\n\n**For more detailed information, check out the [`outsider`\nwebsite](https://docs.ropensci.org/outsider/articles/outsider.html)**\n\n## Installation\n\nTo install the development version of the package …\n\n``` r\nremotes::install_github('ropensci/outsider')\n```\n\nAdditionally, you will also need to install **Docker desktop**. To\ninstall Docker visit the Docker website and follow the instructions for\nyour operating system: [Install\nDocker](https://www.docker.com/products/docker-desktop).\n\n### Compatibility\n\nTested and functioning on Linux, Mac OS and Windows. (For some older\nversions of Windows, the legacy [Docker\nToolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) may\nbe required instead of Docker Desktop.)\n\n## Quick example\n\n``` r\nlibrary(outsider)\n#\u003e ----------------\n#\u003e outsider v 0.1.1\n#\u003e ----------------\n#\u003e - Security notice: be sure of which modules you install\n# outsider modules are hosted on GitHub and other code-sharing sites\n# this repo is a demonstration outsider module\n# it contains a function for printing 'Hello World!' in Ubuntu 18.04\nrepo \u003c- 'dombennett/om..hello.world'\nmodule_install(repo = repo, force = TRUE)\n\n# look up the help files for the module\nmodule_help(repo = repo)\n\n# import the 'hello_world' function\nhello_world \u003c- module_import(fname = 'hello_world', repo = repo)\n\n# run the imported function\nhello_world()\n#\u003e Hello world!\n#\u003e ------------\n#\u003e DISTRIB_ID=Ubuntu\n#\u003e DISTRIB_RELEASE=18.04\n#\u003e DISTRIB_CODENAME=bionic\n#\u003e DISTRIB_DESCRIPTION=\"Ubuntu 18.04.1 LTS\"\n```\n\n## Available external programs\n\nModules available on GitHub since 12:08 30 May 2020 (CEST)\n\n● astral\n\n● beast\n\n● PyRate\n\n● RAxML\n\n● pasta\n\n…. Plus, at least, 10 more\\!\n\nFor more details, see the [available modules\ntable](https://docs.ropensci.org/outsider/articles/available.html)\n\n### Real-World Example: Aligning biological sequences\n\nInstalling and running a multiple sequence alignment program\n([mafft](https://mafft.cbrc.jp/alignment/software/)).\n\n![](https://raw.githubusercontent.com/ropensci/outsider/master/other/alignment_example.gif)\n\n(See [“Evolutionary tree\npipeline”](https://docs.ropensci.org/outsider/articles/phylogenetic_pipeline.html)\nfor running this program yourself.)\n\n### Not finding a module you need?\n\nTry raising an issue to request someone make a module, [Raise an\nIssue](https://github.com/ropensci/outsider/issues/new).\n\nOtherwise, why not make it yourself? Check out the\n[`outsider.devtools`](https://github.com/ropensci/outsider.devtools)\npackage.\n\n## Security notice :rotating\\_light:\n\nThere is a risk that `outsider` modules may be malicious. Modules make\nuse of the program Docker which allows any program to be efficiently\ndeployed by wrapping the program’s code, along with everything that\nprogram requires to run e.g. operating system, dependent libraries, into\nan executable container.\n\nWhile this is useful for providing users with whichever programs they\nrequire, there is a potential security risk if, along with the desired\nprogram and dependencies, malicious software is also shipped.\n\nA well-known malicious example of Docker container exploitation is in\ncryptocurrency mining. A container may ship with a cryptocurrency mining\nsoftware that would make use of your computer’s resources while you ran\nyou the module.\n\nTo minimise any security risks **Be sure of which modules you install on\nyour machine.** Whenever installing a new module, `outsider` will alert\nyou to the potential security risks. Before installing a new module, ask\nyourself:\n\n  - Is this module from a well-known developer?\n  - How many others are using this module?\n\nConsider checking the stats on the module’s GitHub page (e.g. number of\nstars/watchers) or looking-up the details of the developer (e.g. email\nforums, twitter, academic profile).\n\nAdditionally, you may wish to check the Dockerfile of the module. Does\nit install programs from well-known code repositories (e.g. `apt-get`)?\nOr is it running lines of code from unknown/untrackable URL sources?\n\n## How does it work?\n\n`outsider` makes use of the program [docker](https://www.docker.com/)\nwhich allows users to create small, deployable machines, called Docker\nimages. The advantage of these images is that they can be run on any\nmachine that has Docker installed, regardless of operating system. The\n`outsider` package makes external programs available in R by\nfacilitating the interaction between Docker and the R console through\n**outsider modules**. These modules consist of two parts: a Dockerfile\nthat describes the Docker image that contains the external program and\nan R package for interacting with the Docker image. Upon installing and\nrunning a module through `outsider`, a Docker image is launched and the\nR code of the module is used to interact with the external program.\nAnyone can create a module. They are hosted on\n[GitHub](https://github.com/) as well as other code-sharing sites and\ncan be searched for and downloaded through\n`outsider`.\n\n![outsider\\_outline](https://raw.githubusercontent.com/ropensci/outsider/master/other/outline.png)\n\n## Outsider CI statuses\n\n*Statuses of package building checks and tests, run\nmonthly.*\n\n| Repo                                                                      | Linux ([Travis CI](https://travis-ci.org/))                                                                                                 | Windows 10 ([Appveyor](https://www.appveyor.com/))                                                                                                                                                 |\n| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [`outsider.base`](https://github.com/ropensci/outsider.base)              | [![Build Status](https://travis-ci.org/ropensci/outsider.base.svg?branch=master)](https://travis-ci.org/ropensci/outsider.base)             | [![AppVeyor build status](https://ci.appveyor.com/api/projects/status/github/ropensci/outsider.base?branch=master\u0026svg=true)](https://ci.appveyor.com/project/DomBennett/outsider.base)             |\n| [`outsider`](https://github.com/ropensci/outsider)                        | [![Build Status](https://travis-ci.org/ropensci/outsider.svg?branch=master)](https://travis-ci.org/ropensci/outsider)                       | [![AppVeyor build status](https://ci.appveyor.com/api/projects/status/github/ropensci/outsider?branch=master\u0026svg=true)](https://ci.appveyor.com/project/DomBennett/outsider)                       |\n| [`outsider.devtools`](https://github.com/ropensci/outsider.devtools)      | [![Build Status](https://travis-ci.org/ropensci/outsider.devtools.svg?branch=master)](https://travis-ci.org/ropensci/outsider.devtools)     | [![AppVeyor build status](https://ci.appveyor.com/api/projects/status/github/ropensci/outsider.devtools?branch=master\u0026svg=true)](https://ci.appveyor.com/project/DomBennett/outsider.devtools)     |\n| [Outsider Test suites](https://github.com/ropensci/outsider-testsuites)\\* | [![Build Status](https://travis-ci.org/ropensci/outsider-testsuites.svg?branch=master)](https://travis-ci.org/ropensci/outsider-testsuites) | [![AppVeyor build status](https://ci.appveyor.com/api/projects/status/github/ropensci/outsider-testsuites?branch=master\u0026svg=true)](https://ci.appveyor.com/project/DomBennett/outsider-testsuites) |\n\n*\\*Mock pipelines to test the interaction of all the packages.*\n\n## Version\n\nReleased version 0.1, see\n[NEWS](https://github.com/ropensci/outsider/blob/master/NEWS.md).\n\n## Citation\n\nBennett et al., (2020). outsider: Install and run programs, outside of\nR, inside of R. Journal of Open Source Software, 5(45), 2038,\n\u003chttps://doi.org/10.21105/joss.02038\u003e\n\n## Maintainer\n\n[Dom\nBennett](https://github.com/DomBennett)\n\n-----\n\n[![ropensci\\_footer](https://ropensci.org/public_images/ropensci_footer.png)](https://ropensci.org)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fropensci-archive%2Foutsider","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fropensci-archive%2Foutsider","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fropensci-archive%2Foutsider/lists"}