Bioconductor / Contributions

Contribute Packages to Bioconductor
131 stars 33 forks source link
bioconductor

Table of Contents

Contributing a Bioconductor Package

This repository is used to contribute new packages to the Bioconductor project for the analysis and comprehension of high-throughput genomic data. Please

By using this service, please note that:

All interactions should adhere to the Bioconductor Code of Conduct

Starting the Submission Process

To submit a package to Bioconductor:

  1. Create your own GitHub repository, containing source code structured as an R package. The source code must be in the default branch of your GitHub repository. You cannot specify any alternative branches; the default branch is utilized. The default branch must contain only package code. Any files or directories for other applications (Github Actions, devtool, etc) should be in a different branch.

  2. Add SSH public key(s) to your GitHub account. SSH keys will be used during and after package acceptance for updating the Bioconductor git repository.

  3. Open a new issue. Complete the issue by adding the link to your repository, and confirming that you understand the review process, package guidelines, and maintainer responsibilities. Provide the name of your package as the 'Title' of the issue.

What to Expect

Please be mindful that reviewers are volunteers and package reviews are not the only responsibility of Bioconductor team members. We like to see the review process progress by updates from the submitter or by comments from the reviewer within 2-3 weeks. The entire review process typically takes between 2 and 6 weeks. If there is no response after 3 to 4 weeks, package reviewers may close the issue until further updates, changes, and/or commentary are received.

R CMD check environment

It is possible to activate or deactivate a number of options in R CMD build and R CMD check. Options can be set as individual environment variables or they can be listed in a file. Descriptions of all the different options available can be found here. Bioconductor has chosen to customize some of these options for incoming submission during R CMD check. The file of utilized flags can be downloaded from Github. The file can either be place in a default directory as directed here or can be set through environment variable R_CHECK_ENVIRON with a command similar to

export R_CHECK_ENVIRON = <path to downloaded file>

Submitting Related Packages

Sometimes it is appropriate to contribute more than one package at a time. The most common case is when a software package has a companion experiment data package used for illustrative purposes in the vignette. Remember to avoid circular dependencies between packages.

  1. Start by submitting the package that can be installed without a dependency on any of the other packages you are submitting (this is usually the experiment data package). Do this by creating a new issue as described above.

  2. Continue working with this package until it builds and checks without error on any platform.

    Do not submit an AdditionalPackage with the line shown in step 3 until a pre-review or review in progress tag has been added to your package and your first package receives a build report

  3. Submit additional packages to the same issue. Do this by posting a comment containing a line like:

    AdditionalPackage: https://github.com/username/repositoryname

    Include only one AdditionalPackage line per comment. Wait until this related package has been added to git.bioconductor.org, and it has been updated by you to build successfully before submitting further related packages.

  4. The AdditionalPackage comment must be posted by the same GitHub user who created the issue. Also, the initial package submitted in the issue must have completed the 'moderation' step. If these conditions are not met, the additional package will not build.

  5. The additional package will go through the same preapproval process as described in What to Expect

Circular Dependencies

If circular dependencies are truly unavoidable, there are some subtle differences from the above. Bioconductor will support a 'Suggest / Depend' circular dependency. Most often an accompanied data package will "Suggest" the software package, while the software package will "Depend" on the data package. The single package builder (SPB) handles this case by providing each issue with a unique Rlib path for additional package dependencies. The SPB will install each package before tryng to build or check.

  1. Start by submitting the package with the weaker circular dependency (the package that "Suggests" the other package, most often this will be the data package). Do this by creating a new issue as described above. We will call this package A.

  2. This package A will ERROR when running R CMD build. This is expected since the additional package B would not be found yet.

  3. Submit the additional packages to the same issue. Do this by posting a comment containing a line like:

    AdditionalPackage: https://github.com/username/repositoryname
  4. This package B will also ERROR when running R CMD build. This is expected.

  5. Now, perform a version bump on the package A. It should find package B and not ERROR for a missing dependency. Continue working with package A until it builds and checks without error on any platform.

  6. Perform a version bump on package B. It should now find package A and not ERROR for its missing dependency. Continue with the review process.

Additional Actions

To remove an AdditionalPackage: dependency, e.g., because you have identified AnnnotationHub or other resources that make your additional package unnecessary:

  1. Delete or edit all comments with an AdditionalPackage: tag.

Resources

The following pages contain more information about package submission.

If you have a question not answered above, please ask on the bioc-devel mailing list.