Metadata Files
Covers: Chapters 6-12 - README, DESCRIPTION, NAMESPACE, NEWS, LICENSE, CITATION, and system dependencies.
README (Chapter 6)
- README is optional but useful, especially for packages developed on GitHub.
- If present, it must clearly give Bioconductor installation instructions using
BiocManager::install(). - Any installation code blocks must use
eval = FALSEso they do not execute. - Files with executable code (including
README.Rmd) must NOT install packages, download system dependencies, or download applications; assume dependencies are already present. - Declare external software in DESCRIPTION
SystemRequirements, not in the README. README.mdmay be auto-generated from a vignette viaREADME.Rmd(R Markdown child documents) andrmarkdown::render().
DESCRIPTION (Chapter 7)
Required fields:
- Package - must match the repository name (case-sensitive).
- Title - brief but descriptive summary.
- Version -
x.y.zscheme. New submissions start at 0.99.0.yis even for release versions, odd for devel;zincrements with each commit. - Description - relatively short but detailed overview; at least three complete sentences.
- Authors@R - required (use this, not
Authors:). Must include the maintainer with thecrerole and an actively maintained email. Use a single maintainer. Include ORCID incommentif available. Example:person("First", "Last", email = "me@x.org", role = c("cre", "aut"), comment = c(ORCID = "...")). - License - standard R license spec, version-specific (see LICENSE section).
- biocViews - REQUIRED (case-sensitive, lowercase ‘b’). At least two leaf nodes, all from the same trunk/package type; single comma-separated line.
Dependency fields (Depends, Imports, Suggests, Enhances):
- All dependencies must come from Bioconductor or CRAN. The
Remotes:field is NOT supported. - List each package only once across these fields.
- Imports - functions/methods/classes used within the package namespace (the usual place for dependencies).
- Depends - only for functionality essential to users; rarely more than 3 packages (avoid Depends bloat).
- Suggests - packages used only in vignettes, examples, or conditional code.
- Enhances - optional performance packages such as
Rmpiorparallel. - Version specifications are usually not needed.
Other fields:
- LazyData - omit
LazyData: TRUEfor large data packages (it slows loading). - SystemRequirements - external software not auto-installed; add an INSTALL file for non-trivial installs.
- BugReports - encouraged; link to the GitHub issues page.
- URL - source repo and help resources.
- VignetteBuilder - name the builder (e.g.,
knitr) when using vignettes. - BiocType - required for Docker/Workflow submissions; values
Software,ExperimentData,Annotation. - Config/Bioconductor/UnsupportedPlatforms - comma-separated list to exclude platforms (
windows,windows-x64,macosx,macosx-x86_64,macosx-arm64).
NAMESPACE (Chapter 8)
- Prefer
importFrom()to import specific functions; useimport()only when importing many functions from one package. - For Bioconductor classes,
import()the whole package so full class functionality is inherited automatically. - Do NOT use broad export patterns:
exportPattern("^[[:alpha:]]+")is strongly discouraged and almost always not allowed. Export functions/generics individually. - Exported function names should use camelCase or underscores; avoid dots (dots imply S3 dispatch). Functions beginning with
.stay internal and are not exported. - Use
exportMethods()/exportClasses()for S4 methods and classes, anduseDynLib()for compiled code.
NEWS (Chapter 9)
- Exactly one NEWS file per package, in one of:
./inst/NEWS.Rd,./inst/NEWS,./inst/NEWS.md,./NEWS.md, or./NEWS. - NEWS files MUST use list elements/structure; plain text files are not allowed.
- Document the forthcoming release version, in non-technical language.
-
Version heading format:
CHANGES IN VERSION X.Y.Z ------------------------- - Use section headers such as “NEW FEATURES” and “SIGNIFICANT USER-VISIBLE CHANGES” with bullet points.
- Bioconductor compiles NEWS files into semi-annual release announcements.
- Validate formatting with
utils::news(package = "<package_name>"). - To write or update the NEWS file itself, use the
update-r-newsskill (skills/update-r-news/SKILL.md) rather than hand-editing: it already encodes the heading format and section conventions described above.
LICENSE (Chapter 10)
- Use R’s standard license specifications (r-project.org/Licenses). Be version specific (e.g.,
GPL-2). Core packages typically useArtistic-2.0. - Forbidden: licenses restricting use (e.g., to academic or non-profit researchers) and other restrictive licenses (CC BY-NC variants, ACM).
- For a non-standard license, add a full
LICENSEfile at the package root and reference it asfile LICENSE; the file must match theLicense:field. - All dependencies must have compatible open-source licenses, and the package must contain only code that can be redistributed under its license.
CITATION (Chapter 11)
- Place the file at
inst/CITATION. It is optional but recommended. - Validate with
readCitationFile("inst/CITATION")(must run without errors) so it displays correctly on the package landing page. - Follow Writing R Extensions conventions; specify author/maintainer details for correct name formatting. If absent, Bioconductor auto-generates a citation.
- Also include citations in help pages and vignettes.
System dependencies (Chapter 12)
- Declare external software in the DESCRIPTION
SystemRequirementsfield, with an optional INSTALL file giving install instructions for Linux, Windows, and Mac. - System requirements must never be exclusive to a specific version; work with current versions of the external software.
- Declaring a requirement does not guarantee Bioconductor will agree to install it.
- Discuss additional system requirements on bioc-devel@r-project.org before development. Do not install system dependencies from within package code.
Source: README, DESCRIPTION, NAMESPACE, NEWS, LICENSE, CITATION, System dependencies Fetched 2026-08-14 from contributions.bioconductor.org (Bioconductor devel guide).