Bioconductor package licenses

Published

December 11, 2025

Get Bioc package list

suppressPackageStartupMessages({
    library(BiocPkgTools)
    library(dplyr)
    library(DT)
})

BiocManager::version()
[1] '3.23'
pkg <- biocPkgList(repo = "BioCsoft")
'getOption("repos")' replaces Bioconductor standard repositories, see 'help("repositories", package = "BiocManager")'
for details.
Replacement repositories:
    CRAN: https://cloud.r-project.org
adding rname 'https://bioconductor.org/packages/3.23/bioc/VIEWS'
# pkg <- biocPkgList(repo = c("BioCsoft", "BioCann", "BioCexp", "BioCworkflows"))

Get licenses

sort(table(pkg$License, useNA = "ifany"))

                                 AGPL-3 | file LICENSE                 Apache License (== 2.0) + file LICENSE 
                                                     1                                                      1 
                Apache License (== 2.0) | file LICENSE                                Apache License (>= 2.0) 
                                                     1                                                      1 
                     Apache License 2.0 | file LICENSE                                           Artistic 2.0 
                                                     1                                                      1 
                   Artistic-2.0 | GPL-2 + file LICENSE                                           BSD_3_clause 
                                                     1                                                      1 
                           CC BY-SA 4.0 + file LICENSE                                                    CPL 
                                                     1                                                      1 
Creative Commons Attribution 4.0 International License                                           EPL (>= 1.0) 
                                                     1                                                      1 
                  GNU General Public License version 3                                              GPL (==2) 
                                                     1                                                      1 
                                          GPL (>= 2.1)                                             GPL (>=2 ) 
                                                     1                                                      1 
                                                 GPL 3                                          GPL version 3 
                                                     1                                                      1 
                               GPL-2 | GPL-3 | BSL-1.0                                   GPL-3 + file LICENCE 
                                                     1                                                      1 
                                GPL-3 bioconductor.org                                              GPL(>= 2) 
                                                     1                                                      1 
                                              GPL(>=3)                           LGPL (>= 2.1) | file LICENSE 
                                                     1                                                      1 
                                         LGPL (>= 3.0)                              LGPL (>= 3); File LICENSE 
                                                     1                                                      1 
                                              LGPL-2.1                                     MIT | file LICENSE 
                                                     1                                                      1 
                                           MIT License                             Mozilla Public License 2.0 
                                                     1                                                      1 
                                             Unlimited                                                   <NA> 
                                                     1                                                      1 
                               Apache License (== 2.0)                                           Artistic-1.0 
                                                     2                                                      2 
                           Artistic-2.0 + file LICENSE                    BSD 3-clause License + file LICENSE 
                                                     2                                                      2 
                                             CC BY 4.0                                        CC BY-NC-ND 4.0 
                                                     2                                                      2 
                        CC BY-NC-ND 4.0 + file LICENSE                                                    CC0 
                                                     2                                                      2 
                                 CeCILL | file LICENSE                                                    EPL 
                                                     2                                                      2 
                                          GPL (>= 3.0)                                            GPL (>=2.0) 
                                                     2                                                      2 
                                           GPL (>=3.0)                                               GPL (>2) 
                                                     2                                                      2 
            GPL (http://www.gnu.org/copyleft/gpl.html)                                          GPL version 2 
                                                     2                                                      2 
                                GPL Version 2 or later                                          LGPL (>= 2.1) 
                                                     2                                                      2 
                                            LGPL (>=3)                                LGPL-2.1 | file LICENSE 
                                                     2                                                      2 
                                 LGPL-3 + file LICENSE                                  AGPL-3 + file LICENSE 
                                                     2                                                      3 
                                                CeCILL                                           GPL (>= 2.0) 
                                                     3                                                      3 
                             GPL (>= 2) + file LICENSE                               GPL (>=3) + file LICENSE 
                                                     3                                                      3 
                                 Apache License (>= 2)                                   Artistic License 2.0 
                                                     4                                                      4 
                                  GPL-2 + file LICENSE                                   GPL-2 | file LICENSE 
                                                     4                                                      4 
                                            LGPL (>=2)                                     MIT + file LICENCE 
                                                     4                                                      4 
                                         AGPL-3.0-only                                     Apache License 2.0 
                                                     5                                                      5 
                             GPL (>= 3) + file LICENSE                                          GPL-2 | GPL-3 
                                                     5                                                      5 
                                              GPL(>=2)                                                 LGPL-2 
                                                     5                                                      5 
                                                   MIT                            BSD_2_clause + file LICENSE 
                                                     6                                                      8 
                                         LGPL (>= 2.0)                                            LGPL (>= 3) 
                                                     8                                                      8 
                                             GPL (>=3)                            Artistic-2.0 | file LICENSE 
                                                     9                                                     13 
                                  GPL-3 | file LICENSE                                                 AGPL-3 
                                                    14                                                     16 
                           BSD_3_clause + file LICENSE                                            LGPL (>= 2) 
                                                    16                                                     18 
                                                   GPL                                                 LGPL-3 
                                                    21                                                     36 
                                          file LICENSE                                                   LGPL 
                                                    39                                                     39 
                                             GPL (>=2)                                   GPL-3 + file LICENSE 
                                                    47                                                     61 
                                            GPL (>= 3)                                             GPL (>= 2) 
                                                    71                                                    177 
                                                 GPL-2                                     MIT + file LICENSE 
                                                   233                                                    345 
                                                 GPL-3                                           Artistic-2.0 
                                                   484                                                    519 

Clean up

## Get unique licenses
lic <- unique(pkg$License)
lic <- lic[!is.na(lic)]
alres <- lapply(structure(lic, names = lic), tools:::analyze_license)

## Get information about the licenses
alres <- do.call(dplyr::bind_rows, lapply(names(alres), function(nm) {
    a <- alres[[nm]]
    data.frame(License = nm,
               LicenseStandardizable = a$is_standardizable,
               LicenseVerified = a$is_verified,
               LicenseStandardization = a$standardization,
               LicenseCanonical = a$is_canonical,
               LicenseFOSS = a$is_FOSS,
               LicenseRestrictsUse = a$restricts_use)
}))

## Add additional column removing the "+/| file LICENSE" part (if we want to 
## assume that this is compatible with the main license indication)
alres$LicenseStandardizationShort <- gsub("[ ]*\\+*\\|*[ ]*file LICEN[SC]E",
                                          "", alres$LicenseStandardization)

dim(alres)
[1] 91  8
length(unique(alres$LicenseStandardizationShort))
[1] 49
DT::datatable(alres,
              extensions = "FixedColumns",
              rownames = FALSE,
              options = list(scrollX = TRUE, 
                             fixedColumns = list(leftColumns = 1),
                             search = list(regex = FALSE, caseInsensitive = TRUE),
                             pageLength = 20))
## Add license columns to pkg list
pkg <- pkg %>% 
    dplyr::select(Package, Maintainer, License, hasLICENSE) %>%
    dplyr::left_join(alres, by = "License")
dim(pkg)
[1] 2331   11
DT::datatable(pkg,
              extensions = "FixedColumns",
              rownames = FALSE,
              options = list(scrollX = TRUE, 
                             fixedColumns = list(leftColumns = 1),
                             search = list(regex = FALSE, caseInsensitive = TRUE),
                             pageLength = 20))

Tabulate licenses

sort(table(pkg$LicenseStandardizationShort, useNA = "ifany"))

                               Apache License (>= 2.0)                                   Artistic-2.0 | GPL-2 
                                                     1                                                      1 
                                          CC BY-SA 4.0                                                    CPL 
                                                     1                                                      1 
Creative Commons Attribution 4.0 International License                                           EPL (>= 1.0) 
                                                     1                                                      1 
                  GNU General Public License version 3                                             GPL (== 2) 
                                                     1                                                      1 
                                          GPL (>= 2.1)                                GPL-2 | GPL-3 | BSL-1.0 
                                                     1                                                      1 
                                         LGPL (>= 3.0)                                            MIT License 
                                                     1                                                      1 
                            Mozilla Public License 2.0                                              Unlimited 
                                                     1                                                      1 
                                          Artistic-1.0                                   BSD 3-clause License 
                                                     2                                                      2 
                                             CC BY 4.0                                                    CC0 
                                                     2                                                      2 
                                                   EPL                                              GPL (> 2) 
                                                     2                                                      2 
                                         LGPL (>= 2.1)                                               LGPL-2.1 
                                                     3                                                      3 
                               Apache License (== 2.0)                                  Apache License (>= 2) 
                                                     4                                                      4 
                                  Artistic License 2.0                                        CC BY-NC-ND 4.0 
                                                     4                                                      4 
                                          GPL (>= 3.0)                                                 CeCILL 
                                                     4                                                      5 
                                          GPL (>= 2.0)                                          GPL-2 | GPL-3 
                                                     5                                                      5 
                                                LGPL-2                                     Apache License 2.0 
                                                     5                                                      6 
                                          BSD_2_clause                                          LGPL (>= 2.0) 
                                                     8                                                      8 
                                           LGPL (>= 3)                                                   <NA> 
                                                    10                                                     10 
                                          BSD_3_clause                                                 AGPL-3 
                                                    17                                                     20 
                                                   GPL                                            LGPL (>= 2) 
                                                    21                                                     22 
                                                LGPL-3                                                        
                                                    38                                                     39 
                                                  LGPL                                             GPL (>= 3) 
                                                    39                                                     89 
                                            GPL (>= 2)                                                  GPL-2 
                                                   236                                                    243 
                                                   MIT                                           Artistic-2.0 
                                                   356                                                    535 
                                                 GPL-3 
                                                   562 

Some cases that may need attention

We attempt to estimate the fraction of packages that are provided under an OSI approved license. It should be noted that, automatically performed, this will necessary be a rough estimate, e.g. since there are several packages that do not mention the license explicitly in the DESCRIPTION file but only provide the license text in a separate LICENSE file.

totalNbrPkg <- nrow(pkg)
ccLicensed <- pkg$Package[grep("CC|Creative Commons", pkg$LicenseStandardizationShort)]
fileLicense <- pkg$Package[which(pkg$LicenseStandardizationShort == "")]
licUnlimited <- pkg$Package[which(pkg$LicenseStandardizationShort == "Unlimited")]
licNotStandardizable <- pkg$Package[is.na(pkg$LicenseStandardizationShort)]

fractionOSIApproved <- 1 - length(unique(c(ccLicensed, fileLicense, 
                                           licUnlimited, licNotStandardizable)))/totalNbrPkg
print(paste0("Rough estimate of fraction packages with OSI approved license: ", 
             signif(100 * fractionOSIApproved, digits = 4), "%"))
[1] "Rough estimate of fraction packages with OSI approved license: 97.43%"

Creative Commons licenses

Creative Commons recommends not using their licenses for software (but may be suitable for data packages): https://creativecommons.org/faq/#can-i-apply-a-creative-commons-license-to-software. Note though that the CC licenses are among the ‘standard’ open source licenses listed in the R license database: https://svn.r-project.org/R/trunk/share/licenses/license.db.

DT::datatable(subset(pkg, grepl("CC|Creative Commons", LicenseStandardizationShort)),
              extensions = "FixedColumns",
              rownames = FALSE,
              options = list(scrollX = TRUE, 
                             fixedColumns = list(leftColumns = 1),
                             search = list(regex = FALSE, caseInsensitive = TRUE),
                             pageLength = 20))

Packages that have just a ‘file LICENSE’

These need to be checked manually.

.makeLinkToLicense <- function(pkg, text) {
    sprintf('<a href="%s" target="_blank"> %s</a>',
            paste0("https://bioconductor.org/packages/devel/bioc/licenses/", 
                   pkg, "/LICENSE"), 
            text)
}
DT::datatable(subset(pkg, LicenseStandardizationShort == "") %>% 
                  dplyr::mutate(License = vapply(seq_along(License), function(i) {
                      .makeLinkToLicense(Package[i], License[i])
                  }, "NA")),
              extensions = "FixedColumns",
              rownames = FALSE,
              escape = FALSE,
              options = list(scrollX = TRUE, 
                             fixedColumns = list(leftColumns = 1),
                             search = list(regex = FALSE, caseInsensitive = TRUE),
                             pageLength = 20))

Packages that have license “Unlimited”

DT::datatable(subset(pkg, LicenseStandardizationShort == "Unlimited"),
              extensions = "FixedColumns",
              rownames = FALSE,
              options = list(scrollX = TRUE, 
                             fixedColumns = list(leftColumns = 1),
                             search = list(regex = FALSE, caseInsensitive = TRUE),
                             pageLength = 20))

Packages that have licenses that can not be standardized

Some of these may be false positives.

DT::datatable(subset(pkg, is.na(LicenseStandardizationShort)),
              extensions = "FixedColumns",
              rownames = FALSE,
              options = list(scrollX = TRUE, 
                             fixedColumns = list(leftColumns = 1),
                             search = list(regex = FALSE, caseInsensitive = TRUE),
                             pageLength = 20))

The rest of the licenses appear to be approved open source licenses (https://opensource.org/licenses/alphabetical).

Session info

sessionInfo()
R Under development (unstable) (2025-12-07 r89119)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 24.04.3 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so;  LAPACK version 3.12.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

time zone: Etc/UTC
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] DT_0.34.0           dplyr_1.1.4         BiocPkgTools_1.29.2 htmlwidgets_1.6.4  

loaded via a namespace (and not attached):
 [1] xfun_0.54           bslib_0.9.0         httr2_1.2.1         gh_1.5.0            Biobase_2.71.0     
 [6] tzdb_0.5.0          vctrs_0.6.5         tools_4.6.0         crosstalk_1.2.2     bitops_1.0-9       
[11] generics_0.1.4      stats4_4.6.0        curl_7.0.0          RUnit_0.4.33.1      tibble_3.3.0       
[16] RSQLite_2.4.5       blob_1.2.4          pkgconfig_2.0.3     dbplyr_2.5.1        graph_1.89.1       
[21] lifecycle_1.0.4     compiler_4.6.0      stringr_1.6.0       biocViews_1.79.0    htmltools_0.5.9    
[26] sass_0.4.10         RCurl_1.98-1.17     yaml_2.3.11         jquerylib_0.1.4     pillar_1.11.1      
[31] tidyr_1.3.1         cachem_1.1.0        tidyselect_1.2.1    rvest_1.0.5         digest_0.6.39      
[36] stringi_1.8.7       purrr_1.2.0         fastmap_1.2.0       cli_3.6.5           magrittr_2.0.4     
[41] RBGL_1.87.0         XML_3.99-0.20       readr_2.1.6         withr_3.0.2         filelock_1.0.3     
[46] rappdirs_0.3.3      bit64_4.6.0-1       lubridate_1.9.4     timechange_0.3.0    rmarkdown_2.30     
[51] httr_1.4.7          igraph_2.2.1        bit_4.6.0           hms_1.1.4           memoise_2.0.1      
[56] evaluate_1.0.5      knitr_1.50          BiocFileCache_3.1.0 rlang_1.1.6         glue_1.8.0         
[61] DBI_1.2.3           BiocManager_1.30.27 xml2_1.5.1          BiocGenerics_0.57.0 jsonlite_2.0.0     
[66] R6_2.6.1