| Repository | Curation | Type | VCS | Installer |
|---|---|---|---|---|
| CRAN | curated | Distr | SVN | install.packages |
| Github | open | Devel | git | devtools::install_github |
| Bioconductor | curated | Both | git | BiocManager::install |
| R-forge | open? | Devel? | SVN | install.packages with repo set |
| Repository | Curation | Type | VCS | Installer |
|---|---|---|---|---|
| CRAN | curated | Distr | SVN | install.packages |
| Github | open | Devel | git | devtools::install_github |
| Bioconductor | curated | Both | git | BiocManager::install |
| R-forge | open? | Devel? | SVN | install.packages with repo set |
Read the Policy
Write the package
Test the package
Submit for review / acceptance
Maintain the package: re-submit
devtools) and set originRead the Package guidelines and Coding style
Start a repository on Github
Write & test your package
Submit your package repo to the Bioconductor Contributions repo (Submission process )
Maintain:
master)RELEASE_x_y, currently 3.10)Focused on high-throughput genomic analysis
Tightly coupled package versions with bi-annual releases
BiocManager (on CRAN)Run their own git server, but recommend keeping a sync on Github (two remotes)
Nice developer ressources
Run by r-project.org
Installation via
install.packages("mypackage", repos = c("http://R-Forge.R-project.org",
"http://your.nearest.CRAN.mirror.org"), dependencies = TRUE)Can mean:
importing functionality from installed packages
adding code, modifications to existing packages which are not yours
including code from other packages into your own
Technical, legal, social, philosophical implications
General advice:
Your package uses another installed package to do something:
mypkgotherpkgDepends:
otherpkg necessary for installing mypkglibrary(mypkg), otherpkg will be in the search path for the usermypkg really only makes sense in the context of otherpkg, e.g. latticeExtra and latticeImports:
otherpkg necessary for installing mypkgotherpkg will be used internally by mypkgNAMESPACESuggests:
otherpkg NOT necessary for installing mypkgEnhances:
otherpkg NOT necessary for installing mypkgmypkg adds functionality to otherpkgmypkg has extra methods for classes defined in otherpkgReference: Writing R Extensions, Section 1.1.3
Reference: Writing R Extensions, Section 1.5
Only exported functions are visible after library(mypkg) or via mypkg::
Unexported functions are available as mypkg:::
Suggestion:
exportPattern("^[^\\.]")),@export-tags before releaseimport(otherpkg) in NAMESPACE corresponds to library(otherpkg) in linear code
Qualified names otherpkg:: will work without import/importFrom
Suggestion:
@ìmport important packages at start (replace library)@import when you get tired of otherpkg::@import with @importFromReport issues: informatively, politely (minimal replicable example)
Add fixes via forking:
establish a private copy of a package (dead easy on Github)
make modifications
offer modifications to package owner (pull request)
Alt.: if the licence allows, go rogue with your own (forked) version
Play nice: e.g. ggplot2 code of conduct
Ressources:
Legal under open source licence under certain conditions
For legal & ethical reasons: give credit
Software licensing matters in research, same as data protection & citation rules.
Licensing R: not a legal document, but
No.
But you should think about it: